问题描述
@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);
},);
},