我有一个正在创建ListView
的屏幕。对于Android,我想实现“长按”。对于iOS,我想要“滑动手势”。
要长按并滑动,我必须显示3个选项:
Delete | Delete All | More...
操作方法。
答案 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'));
}