firebase - 如何在颤振聊天屏幕中根据时间戳打印从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)
如果我在控制台上打印时间戳的值,这是我得到的输出
解决方案
推荐阅读
- vuejs2 - 当 vuex 存储中的状态发生变化时更新我的 for 循环
- sql - sequelize.js $like 运算符中的 % 符号是什么意思?
- c++ - const 方法使用引用修改对象
- mysql - 如何显示相同原始ID的所有不同数据
- sql-server - SQL server - 列中的累积值
- amazon-web-services - DynamoDB 细粒度访问控制和二级索引
- mysql - 如何在 coumn_name 有逗号分隔值的情况下运行 sql 查询?
- angular - 可观察,在 ngOnDestroy 中取消订阅不起作用
- selenium - @AfterClass 在 TestNG 中执行类后不会立即调用
- django - 计算 Django 中多对多字段对字符串表示的使用