微信iOS端有一个点击删除后—->确认删除,再次点击后才删除的效果
原效果如下:
微信点击二次确认删除交互
那么在flutter中如何实现这样的交互效果呢?
1.首先使用pub工具导入flutter_swipe___action_cell,我们将使用这个包来做这样的效果
2.然后我们创建数据源,数据我们就使用一个从0-100的数字组成的List来作为数据源
List list = List.generate(100, (index) {return index;});
3.在页面中返回一个ListView,将列表项作为函数,函数签名为 _item(int index)
return Scaffold(appBar: AppBar(title: Text(widget.title),),body: ListView.builder(itemBuilder: (c, index) {return _item(index);},itemCount: list.length,),);
4.在_item(int index)中,我们返回如下的布局
Widget _item(int index) {return SwipeActionCell(///这个key是必要的key: ValueKey(list[index]),actions: <SwipeAction>[SwipeAction(nestedAction: SwipeNestedAction(title: "确认删除",),title: "删除",onTap: (CompletionHandler handler) async {///true 代表将会执行动画,等待动画结束才更新状态await handler(true);list.removeAt(index);setState(() {});},color: Colors.red),SwipeAction(title: "置顶",onTap: (CompletionHandler handler) async {handler(false);},color: Colors.grey),],child: Padding(padding: const EdgeInsets.all(20.0),child: Text("this is index of ${list[index]}",style: TextStyle(fontSize: 45)),),);}
然后我们就可以得到如下的效果了:
基本上能够完全还原了,当然,这个删除的时候还有一个折叠动画,这个动画是可以取消的,把中间那句
await handler(true);
删掉就可以取消动画了,还是非常简单的就实现了这个效果。
