Я создаю в основном приложение для сообщений, в котором пользователь может добавить сообщение (задачу), которое будет сохранено в 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);
}