颤振-删除firebase文档onTap()
我有一个列表视图,其中充满了作为聊天信息的Firebase集合 当用户长按ListTile(列表中的一个项目)时,我会显示一个底部工作表 当用户单击底页上的颤振-删除firebase文档onTap(),firebase,dart,flutter,Firebase,Dart,Flutter,我有一个列表视图,其中充满了作为聊天信息的Firebase集合 当用户长按ListTile(列表中的一个项目)时,我会显示一个底部工作表 当用户单击底页上的Delete按钮时,应删除文档。点击“删除”按钮后,我无法找到删除所选文档的方法 listview小部件: return ListView.builder( padding: new EdgeInsets.all(8.0), reverse: true, itemCount: snapshot.data.documen
Delete
按钮时,应删除文档。点击“删除”按钮后,我无法找到删除所选文档的方法
listview小部件:
return ListView.builder(
padding: new EdgeInsets.all(8.0),
reverse: true,
itemCount: snapshot.data.documents.length,
itemBuilder: (_, int index) {
var message = snapshot.data.documents[index]["content"];
var from = snapshot.data.documents[index]["idFrom"];
return new ListTile(
leading: new CircleAvatar(
backgroundColor: Colors.blue,
child: new Image.network(
"http://res.cloudinary.com/kennyy/image/upload/v1531317427/avatar_z1rc6f.png")),
title: new Row(
children: <Widget>[
new Expanded(child: new Text(message))
]
),
subtitle: new Text(from),
onLongPress: () {
showModalBottomSheet<void>(context: context,
builder: (BuildContext context) {
return Container(
child: new Wrap(
children: <Widget>[
new ListTile(
leading: new Icon(Icons.delete),
title: new Text('Delete'),
onTap: () =>
// Remove the tapped document here - how?
print(snapshot.data.documents[index]["id"])
Firestore.instance.collection("chats").document("ROOM_1")
.collection("messages").document(snapshot.data.documents[index]["id"])
.delete();
)
)
]
)
);
});
}
);
});
IDE重新运行一个错误
需要一个标识符要删除文档,我们可以使用Firestore.instance的runTransaction
方法和Transaction
类的delete
方法
await Firestore.instance.runTransaction((Transaction myTransaction) async {
await myTransaction.delete(snapshot.data.documents[index].reference);
});
而不是
Firestore.instance.collection("chats").document("ROOM_1")
.collection("messages").document(snapshot.data.documents[index]["id"])
.delete();
以下是删除doc1
文档之前我的虚拟数据库的外观:
删除doc1
后:
如果您知道文档id,则可以轻松删除
Future<void> rejectJob(String jobId){
return _db.collection('jobs').document(jobId).delete();
}
未来拒绝作业(字符串jobId){
返回_db.collection('jobs').document(jobId.delete();
}
2021年更新:
将以下代码添加到按钮的onPressed
方法中
final collection=FirebaseFirestore.instance.collection('collection');
收集
.doc('some_id')//打印('Delete failed:$error');
尝试删除onTap上的胖箭头=>
。与其他语言相比,在dart中不能将箭头与{}组合使用。您应该尝试以下类似的onTap:()=>snapshot.data.documents[index][“id”]我更新了代码,我仍然无法删除文档,我得到了太多的位置参数错误。不知道怎么了。
Future<void> rejectJob(String jobId){
return _db.collection('jobs').document(jobId).delete();
}