Как исправить проблему со снимком коллекции Firestore - PullRequest
1 голос
/ 10 ноября 2019

Я пытаюсь упорядочить мою коллекцию сообщений от Firebase от самой новой до самой старой. Но мои сообщения отображаются случайным образом один раз за последним и один раз перед последним. Несмотря на мой финал, который заказал мою коллекцию в обратном порядке

Я пытался найти предмет для заказов в режиме реального времени, но я не могу найти ничего об этом на Flutter и Firestore. (Возможно, я слепой или плохо выгляжу)

class MessagesStream extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _fireStore.collection('messages').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 messageSender = message.data['sender'];
          final messageText = message.data['text'];

          final currentUser = loggedInUser.email;

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

Я добавляю свои данные в этот виджет:

FlatButton(
                    onPressed: () {
                      messageTextController.clear();
                      _fireStore.collection('messages').add(
                          {'text': messageText, 'sender': loggedInUser.email});
                    },
                    child: Text(
                      'Send',
                      style: kSendButtonTextStyle,
                    ),
                  ),

1 Ответ

0 голосов
/ 10 ноября 2019

при добавлении данных вы можете добавить отметку времени / отметку времени сервера к вашему документу и затем использовать ее для упорядочения вашего примера данных "timestamp": Timestamp.now(),, а затем запросить данные .orderby('timestamp' ,descending :true)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...