长按并在Flutter的ListView中滑动

时间:2019-03-27 05:05:02

标签: dart flutter flutter-listview

我有一个正在创建ListView的屏幕。对于Android,我想实现“长按”。对于iOS,我想要“滑动手势”。

要长按并滑动,我必须显示3个选项:

Delete | Delete All | More...

操作方法。

2 个答案:

答案 0 :(得分:2)

要给您一个想法,您可以执行此操作。

@override
Widget build(BuildContext context) {
  bool isIos = Theme.of(context).platform == TargetPlatform.iOS;
  return ListView.builder(
    itemBuilder: (context, index) {
      if (isIos) {
        return Dismissible(
          key: Key("unique_key"),
          child: YourOwnWidget(),
          onDismissed: (direction) {
            // your item is swiped, perform operation here
          },
        );
      }
      return GestureDetector(
        onLongPress: () {
          // you can show an AlertDialog here with 3 options you need
        },
        child: YourOwnWidget(),
      );
    },
  );
}

答案 1 :(得分:1)

在适用于Android的GetureDetector中包装列表项UI,并使用onLongTap回调。对于iOS,您可以将列表项用户界面包装在Dissmissable小部件中。一个简单的提取应对此有所帮助。

将您的UI放在仅返回该项目的UI的函数中,然后根据平台将其与上述包装在一起。

// import platform helpers
import 'package:flutter/foundation.dart' show defaultTargetPlatform;
import 'package:flutter/foundation.dart' show TargetPlatform;


// determine your platform
 final isIOS = defaultTargetPlatform == TargetPlatform.iOS;


// return your appropriate wrapper
isIOS 
? Dismissible(
  child: _getListItemUi(),
) 
: GestureDetector(
  onLongPress: () {
  },
  child: _getListItemUi()
);

Widget _getListItemUi() {
  return Container(child: Text('List Item UI'));
}