如何解决如何使用Dissmissable从Itembuilder中删除项目,并且该项目来自Firestore?
@override
Widget build(BuildContext context) {
final textTheme = Theme.of(context).textTheme;
return Scaffold(
body: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('users')
.document(widget.uid)
.collection('lists')
.snapshots(),builder: (context,snapshot) {
return !snapshot.hasData
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: snapshot.data.documents.length,itemBuilder: (context,index) {
DocumentSnapshot data = snapshot.data.documents[index];
final list = snapshot.data.documents;
return dismissible(
// dismissed function
key: UniqueKey(),ondismissed: (dismissDirection direction) {
setState(() {
// This is where I would like to remove the element
// snapshot.data.remove(index);
});
},secondaryBackground: Container(
child: Center(
child: Text('Delete',style: TextStyle(color: Colors.white),textAlign: TextAlign.start),),color: Colors.red,background: Container(),child: Card(
child: Center(
child: new Container(
padding: new EdgeInsets.all(32.0),child: new Column(
children: <Widget>[
new Text(data['listName']),new Text(data['Description'])
],direction: dismissDirection.endToStart,);
},);
},
- 整个目标是使卡片元素消失并从Firestore中删除该项目。
- 我考虑过将每件物品放入地图,然后根据地图制作卡片。我宁愿不那样做。
希望得到任何帮助,我们可以一起解决此问题:)
提前谢谢!
解决方法
首先通过以下操作获取文档参考:
依次访问:snapshot.data.documents
,然后snapshot.data.documents[i].documentID
然后这个:
onDismissed: (direction) async {
await Firestore.instance.runTransaction(
(transaction) async {
await transaction.delete(your doc ref here);
},);
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。