Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
颤振-删除firebase文档onTap()_Firebase_Dart_Flutter - Fatal编程技术网

颤振-删除firebase文档onTap()

颤振-删除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

我有一个列表视图,其中充满了作为聊天信息的Firebase集合

当用户长按ListTile(列表中的一个项目)时,我会显示一个底部工作表

当用户单击底页上的
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();
  }