聊天消息排序不正确

Posted

技术标签:

【中文标题】聊天消息排序不正确【英文标题】:Chat messages not ordering correctly 【发布时间】:2019-05-02 20:30:12 【问题描述】:

我将 Firestore 和 Flutter 用于聊天应用程序。它工作正常,但我看到了这个问题。有时消息未按顺序显示。例如,通常它们在底部被排序为最近的。但我在 iosandroid 模拟器上进行测试,有时会看到消息未按顺序显示。例如,我在 iOS 上发送消息,一切正常(按顺序)。然后我在不同的模拟器(例如 Android)上发送消息,消息显示在顶部,然后开始下降(在 iOS 上发送的消息之上)。

这是我的代码:

            child: new FirestoreAnimatedList(
              query: reference
                  .orderBy('timestamp', descending: true)
                  .snapshots(),
              padding: new EdgeInsets.all(8.0),
              reverse: true,
              itemBuilder: (_, DocumentSnapshot snapshot,
                  Animation<double> animation, int x) 
                return new Chat(
                    snapshot: snapshot, animation: animation);
              ,
            ),

'timestamp': DateTime.now(),

我试过这个但同样的问题:

'timestamp': DateTime.now().millisecondsSinceEpoch.toString()

我寻找了几周的答案,但没有找到。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

您可能会遇到此问题,因为设备报告的时间不同。

要解决此问题,请使用服务器时间而不是本地时间。这是通过将 timestamp 字段设置为 FieldValue.serverTimestamp() 来完成的。

Documentation.

【讨论】:

感谢您的回复!我现在试试 @FlutterFirebase 运气好吗? @FlutterFirebase 没问题!如果是,请确保将您的问题标记为已回答:) 我也遇到过这个排序问题试过你的答案但没有运气,请帮助

以上是关于聊天消息排序不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何按最新消息对聊天列表进行排序?

如何正确处理聊天消息应用程序的“已读”-“未读”状态?

如何正确处理聊天消息应用程序的“读取” - “未读”状态?

选择正确的聊天协议实现

核心数据聊天应用获取一批按日期排序的消息

无服务器群消息(聊天)Xmpp