【问题标题】:is there any function that help in adding friends in flutter app and sort them? [closed]是否有任何功能可以帮助在颤振应用中添加朋友并对其进行排序? [关闭]
【发布时间】:2021-12-11 17:56:34
【问题描述】:

我正在开发一个使用 Flutter 和 Firebase 作为后端的聊天应用,我想要这些功能,

  1. 我需要实现一个添加好友功能,并将其添加到联系人列表中。

  2. 每当用户与联系人交谈时,其聊天室都会像信使一样在列表中排序到顶部。

我该怎么做,我应该使用 firestore 还是 database ? 本项目的GitHub repo链接:https://github.com/Maxcousin123/whatzapp.git

提前致谢

【问题讨论】:

  • 这个问题似乎之前没有研究过。在您深入了解拥有一个有效的联系人/朋友列表之前,您为什么不事先研究实际的聊天协议?
  • 这看起来更像是“你能为我做这项工作吗?”题。开始做你自己的研究,如果这没有帮助并且你找不到方法,我们很乐意提供帮助
  • 我正在研究这个功能 2 周,并尝试了一切,然后才在这里发布,看不到通常粗鲁的答案 :)

标签: android ios firebase flutter firebase-authentication


【解决方案1】:

将 Firestore 用于聊天应用程序可能不是最佳方法,因为它需要大量读取和写入,而且 Firestore 速率更多地取决于读取和写入而不是存储。

对于实时更新,请使用FireStore,因为它提供的数据流在使用StreamBuilder 时非常有用。

chats 创建 Firestore 集合

在这个集合中,为每个用户维护一个唯一的文档,userId为documentId

创建一个名为chatRooms 的子集合,并为每个chatRooms 文档创建一个字段lastMessageTime,用于排序。

您的 Firestore 结构应如下所示,

  • 聊天(收藏)
    |
    • 用户ID
      |
      • chatRooms(子集合)
        |
        • 聊天室 ID
          |
          • lastMessageTime(时间戳 - 字段)
          • lastMessageData(字符串 - 字段)
          • 消息(子集合)

要获取顶部有最新活动的聊天室,请根据TimeStamp 对来自chatRooms 集合的数据进行排序。

Firestore.instance
.collection("chat").doc(user.id).collection("chatRooms")
     .orderBy('lastMessageTime', descending: true).getDocuments()


            
    

P.S:这可能不是最好的解决方案,但你可以通过尝试来学习。

【讨论】:

  • Firestore 不是聊天应用程序的最佳解决方案,因为您有很多读写操作,对于这个用例,实时数据库更好@ASAD HAMEED
  • 是的,这很好。 @AnanSaadi 您能否相应地编辑答案。我最近没有和Realtime Database 合作过。
猜你喜欢
  • 2020-06-17
  • 2020-01-12
  • 1970-01-01
  • 2010-09-11
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多