首页 > 解决方案 > 如何在颤振聊天屏幕中根据时间戳打印从firestore获得的数据

问题描述

StreamBuilder<QuerySnapshot>(
              stream: _fireStore.collection('messages').orderBy('creation',descending: true).snapshots(),
              // ignore: missing_return
              builder: (context, snapshot) {
                if (!snapshot.hasData) {
                  return Center(
                    child: CircularProgressIndicator(
                      backgroundColor: Colors.lightBlueAccent,
                    ),
                  );
                }
                print(snapshot.data.documents);
                final messages = snapshot.data.documents;
                List<MessageBubble> messageBubbles = [];
                for (var message in messages) {
                  final messageText = message.data['text'];
                  final messageSender = message.data['sender'];

                  final currentUser = loggedInUser.email;

                  final messageBubble = MessageBubble(
                    messageText: messageText,
                    messageSender: messageSender,
                    isMe: currentUser == messageSender,
                  );
                  messageBubbles.add(messageBubble);
                }
                return Expanded(
                  child: ListView(
                    reverse: true,
                    padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20),
                    children: messageBubbles,
                  ),
                );
              },
            ),

我可以将数据打印到聊天屏幕上,但是。即使我使用了时间戳方法,聊天消息也不是有序的。 https://github.com/umakanth-pendyala/Chat-app-with-flutter-and-fire-base/blob/master/lib/screens/chat_screen.dart是 GitHub 上此页面的链接

I/flutter ( 6842): Timestamp(seconds=1592153051, nanoseconds=815667000)
I/flutter ( 6842): Timestamp(seconds=1592152945, nanoseconds=926026000)
I/flutter ( 6842): Timestamp(seconds=1592152927, nanoseconds=592784000)
I/flutter ( 6842): Timestamp(seconds=1592151589, nanoseconds=936798000)
I/flutter ( 6842): Timestamp(seconds=1592146470, nanoseconds=674283000)
I/flutter ( 6842): Timestamp(seconds=1592110369, nanoseconds=392054000)

如果我在控制台上打印时间戳的值,这是我得到的输出

标签: firebasefluttergoogle-cloud-firestore

解决方案


推荐阅读