在 flutter 中保存两个用户聊天时出错

error in saving two users chat in flutter

我正在用 firebase 制作聊天应用程序。我能够通过这个功能在 firebase 中保存用户聊天:

await FirebaseFirestore.instance
                        .collection("Chats")
                        .doc(uid! + FirebaseAuth.instance.currentUser!.uid)
                        .collection("messages")
                        .add({
                      FirebaseAuth.instance.currentUser!.uid:
                          chatController.text,
                      
                    }).then((value) => () {
                              b = uid;
                            });

但是当我保存一个用户聊天时。我在想什么时候我会得到第二个用户的聊天。它将 return 来自我保存两个用户聊天的文档的聊天。但不幸的是,当我保存用户聊天时,它会保存一个名为第一个用户 ID 的新文档,然后是第二个用户 ID,在第一个用户聊天中,它会保存名为第二个用户 ID 和第一个用户 ID 的文档。我知道发生这种情况的原因是什么,但我该如何解决,我的意思是如何将两个用户的聊天记录保存在一个文档中

更新:根据Frank的回答我试过的功能:

 var docId = uid
        .toString()
        
        .compareTo(FirebaseAuth.instance.currentUser!.uid) > 0;

用于打印docId的函数:

    IconButton(
              icon: Icon(Icons.send),
              iconSize: 20.0,
              onPressed: () async { print(docId);}
            )

您需要为文档确定一个 ID。

一个简单的方法是始终按字母顺序对两个 UID 进行排序,如下所示:

const docId = uid!.compareTo(FirebaseAuth.instance.currentUser!.uid) > 0 
  ? uid! + FirebaseAuth.instance.currentUser!.uid 
  : FirebaseAuth.instance.currentUser!.uid + uid! 

await FirebaseFirestore.instance
                        .collection("Chats")
                        .doc(docId)
                        ...

有关这方面的更多信息,请在此处查看我的回答中的示例: