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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)