Flutter: получать новые документы только после первого получения при потоковой передаче из firestore

Я создаю групповой чат в своем приложении, используя firstore. В настоящее время я использую Stream для чтения сообщений. Насколько я понимаю (это мое первое приложение Flutter), каждый новый документ в коллекции группового чата будет запускать чтение каждого документа от каждого активного клиента. Есть ли способ при первой загрузке получить каждый документ, а затем с этого момента получать только недавно опубликованные документы? Моя цель - найти лучшую производительность для клиента и наименьшее количество операций чтения из базы данных.

Это код, который я использую для потоковой передачи коллекции:

      //DatabaseService class

Stream streamGroupchat(Event event){
  return groupChats.doc(event.groupChatEnabledID).collection("messages")
      .orderBy('timeStamp', descending: false)
      .limit(50)
      .snapshots();
}

Код, где я слушаю

       return StreamBuilder<QuerySnapshot>(
  stream: DatabaseService().streamGroupchat(event),
  builder: (context, snapshot){
    if(snapshot.hasError){
      return Text("Something went wrong");
    }

    if(snapshot.connectionState == ConnectionState.waiting){
      return Loading();
    }

    // Data available

    return Scaffold(
      body: Column(
        children: [
          Expanded(
            flex: 2,

            // Where I start using the data
            child: ListView.builder(
              itemCount: snapshot.data.docs.length,
              itemBuilder: (context, index){
                Message message = Message.fromMap(snapshot.data.docs[index].data());
                return MessageView(message: message,);
              },

            ),
          ),
        ]
    );

0 ответов

Другие вопросы по тегам