flutter ListView做侧滑删除
Flutter中的ListView并没有直接提供侧滑删除的功能,但可以通过在ListView中嵌套Dismissible组件实现侧滑删除。
以下是一个简单的示例代码:
class MyListView extends StatefulWidget {
@override
_MyListViewState createState() => _MyListViewState();
}
class _MyListViewState extends State<MyListView> {
List<String> items = List.generate(20, (index) => "Item ${index + 1}");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("ListView with Swipe to Delete"),
),
body: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
final item = items[index];
return Dismissible(
key: Key(item),
onDismissed: (direction) {
setState(() {
items.removeAt(index);
});
Scaffold.of(context).showSnackBar(
SnackBar(content: Text("$item dismissed")),
);
},
background: Container(color: Colors.red),
child: ListTile(title: Text('$item')),
);
},
),
);
}
}
在这个示例中,我们使用List.generate生成了20个列表项,然后在ListView的itemBuilder中使用Dismissible包装每个列表项。Dismissible需要指定一个唯一的key以便将其标识,以及一个onDismissed回调函数,该函数会在用户完成侧滑删除操作后被调用。
在Dismissible的background属性中指定了一个红色的背景,表示侧滑删除时的背景颜色。在Dismissible的child属性中放置了一个ListTile,用于显示列表项的内容。
当用户完成侧滑删除操作时,onDismissed回调函数会被调用,我们可以在该函数中更新列表数据,并通过Scaffold.of(context).showSnackBar显示一个提示消息。
这样,我们就可以实现一个简单的侧滑删除功能了。
原文地址: https://www.cveoy.top/t/topic/fLA 著作权归作者所有。请勿转载和采集!