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,);
},
),
),
]
);