【发布时间】:2020-10-31 13:27:26
【问题描述】:
我基本上正在构建一个消息应用程序,用户可以在其中添加消息(任务),该消息将保存在 firebase 中。然后它应该在屏幕上按顺序显示为“消息气泡”(屏幕底部的最新消息)。消息没有按顺序显示。查看我的 firebase 数据库集合,似乎消息没有按到达时间的顺序保存。这是正常行为吗?这是否意味着我必须对快照进行排序?我认为快照会以与发送消息完全相同的顺序向我显示消息。
TextField(
controller: messageTextController,
autofocus: true,
textAlign: TextAlign.center,
cursorColor: Colors.white,
style: TextStyle(color: Colors.white, fontSize: 20.0),
onChanged: (newText) {
newTaskTitle = newText;
},
),
FlatButton(
child: Text(
'Add',
style: TextStyle(
color: kSlate,
),
),
color: kSlateBorder,
onPressed: () {
messageTextController.clear();
firestore.collection('Slate1').add({
'Task': newTaskTitle,
'User': loggedInUser.email,
});
Navigator.pop(context);
},
),
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: firestore.collection('Test').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.lightBlueAccent,
),
);
}
final messages = snapshot.data.documents.reversed;
List<MessageBubble> messageBubbles = [];
for (var message in messages) {
final messageText = message.data['Task'];
final messageSender = message.data['User'];
final currentUser = loggedInUser.email;
final messageBubble = MessageBubble(
sender: messageSender,
text: messageText,
isMe: currentUser == messageSender,
);
messageBubbles.add(messageBubble);
}
【问题讨论】:
标签: database firebase flutter dart google-cloud-firestore