为什么我在firebasestore得到这么多阅读?颤振聊天应用程序

为什么我在firebasestore得到这么多阅读?颤振聊天应用程序,firebase,flutter,Firebase,Flutter,我有个问题, 我刚刚创建了我的聊天应用程序,在我尝试添加一些功能之前,它工作得非常好 我的应用程序从fire base store中读取了大量数据。它每分钟读取超过1000次 我试图找出问题出在哪里,我发现了它,它是在我的流生成器中,但问题我不知道如何解决它可能是我的逻辑错误 下面是流生成器代码 class Streambuild extends StatelessWidget { final String roomid; Streambuild({@required this.room

我有个问题, 我刚刚创建了我的聊天应用程序,在我尝试添加一些功能之前,它工作得非常好

我的应用程序从fire base store中读取了大量数据。它每分钟读取超过1000次

我试图找出问题出在哪里,我发现了它,它是在我的流生成器中,但问题我不知道如何解决它可能是我的逻辑错误

下面是流生成器代码

class Streambuild extends StatelessWidget {
  final String roomid;
  Streambuild({@required this.roomid});

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
        stream: _store
            .collection('FCHATROOM')
            .doc(roomid)
            .collection("CHAT")
            .orderBy('time')
            .snapshots(),
        builder: (context, snap) {
          if (!snap.hasData) {
            return Center(
              child: Text('No Messages'),
            );
          }
          return Expanded(
            child: ListView.builder(
                itemCount: snap.data.docs.length,
                reverse: true,
                shrinkWrap: true,
                itemBuilder: (context, index) {
                  final messgaes = snap.data.docs.reversed;
                  List<String> text = [];
                  List<String> sender = [];
                  List<String> time = [];
                  for (var msg in messgaes) {
                    text.add(msg.data()['message']);

                    sender.add(msg.data()['sender']);

                    time.add(msg.data()['realtime']);
                  }
                  return Bubblemsg(
                    txt: text[index],
                    sender: sender[index],
                    realtime: time[index],
                    isMe: (_auth.currentUser.email == sender[index]),
                  );
                }),
          );
        });
  }
}
类Streambuild扩展了无状态小部件{
最终字符串roomid;
Streambuild({@required this.roomid});
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:\ u存储
.collection(“FCHATROOM”)
.doc(室友)
.收藏(“聊天”)
.orderBy(“时间”)
.snapshots(),
生成器:(上下文,捕捉){
如果(!snap.hasData){
返回中心(
子项:文本(“无消息”),
);
}
扩大回报(
子项:ListView.builder(
itemCount:snap.data.docs.length,
相反:是的,
收缩膜:对,
itemBuilder:(上下文,索引){
最终消息=snap.data.docs.reversed;
列表文本=[];
列表发送者=[];
列表时间=[];
for(信息中的var msg){
text.add(msg.data()['message']);
sender.add(msg.data()['sender']);
添加(msg.data()['realtime']);
}
返回气泡SG(
文本[索引],
发件人:发件人[索引],
实时:时间[索引],
isMe:(_auth.currentUser.email==发件人[索引],
);
}),
);
});
}
}
这是bubblemsg课程

class Bubblemsg extends StatelessWidget {
  Bubblemsg(
      {this.sender, this.txt, this.isMe, this.realtime});
  final String txt;
  final String sender;
  final bool isMe;
  final String realtime;

  @override
  Widget build(BuildContext context) {
    var myprov = Provider.of<Help>(context, listen: false);
    return Container(
      width: double.infinity,
      child: Bubble(
        elevation: 5,
        padding: BubbleEdges.all(10),
        margin: isMe
            ? BubbleEdges.only(top: 10, right: 5, left: 30)
            : BubbleEdges.only(top: 10, left: 5, right: 30),
        alignment: isMe ? Alignment.topRight : Alignment.topLeft,
        nip: isMe ? BubbleNip.rightTop : BubbleNip.leftTop,
        color: isMe ? myprov.mid : Colors.grey[900],
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.end,
          children: [
            txt != null
                ? txt.startsWith("https://firebasestorage.googleapis.com/v0")
                    ? Imagecontainer(
                        url: txt,
                      )
                    : SelectableText(
                        txt != null ? txt : "",
                        style: TextStyle(
                          color: myprov.word,
                          fontSize: 20,
                        ),
                      )
                : Text(""),
            Padding(
              padding: EdgeInsets.only(top: 10.0),
              child: Text(
                realtime != null ? realtime : "",
                style: TextStyle(fontSize: 15, color: myprov.word),
                textAlign: TextAlign.end,
              ),
            )
          ],
        ),
      ),
    );
  }
}
类Bubblemsg扩展了无状态小部件{
泡泡糖(
{this.sender,this.txt,this.isMe,this.realtime});
最终字符串txt;
最终字符串发送器;
最终目标;
最终字符串实时;
@凌驾
小部件构建(构建上下文){
var myprov=Provider.of(上下文,侦听:false);
返回容器(
宽度:double.infinity,
孩子:泡泡(
标高:5,
填充:气泡边缘。全部(10),
保证金:isMe
?仅限气泡边缘(顶部:10个,右侧:5个,左侧:30个)
:仅限泡泡糖(顶部:10,左侧:5,右侧:30),
对齐:isMe?对齐。右上角:对齐。左上角,
nip:isMe?BubbleNip.rightTop:BubbleNip.leftTop,
颜色:isMe?myprov.mid:颜色.灰色[900],
子:列(
crossAxisAlignment:crossAxisAlignment.end,
儿童:[
txt!=null
?txt.startsWith(“https://firebasestorage.googleapis.com/v0")
?图像容器(
网址:txt,
)
:可选择文本(
txt!=null?txt:“”,
样式:TextStyle(
颜色:myprov.word,
尺寸:20,
),
)
:文本(“”),
填充物(
填充:仅限边缘设置(顶部:10.0),
子:文本(
实时!=空?实时:“”,
样式:TextStyle(字体大小:15,颜色:myprov.word),
textAlign:textAlign.end,
),
)
],
),
),
);
}
}
这是我的阅读几分钟后,它花了12k阅读

我确信我的编码方式是错误的,对不起,我是新来的

你知道有什么问题吗?
感谢您的高级指导。

如果您在流生成器中使用for循环,它将增加您的阅读量,以避免出现此问题。不要使用for循环,因为您已经在使用列表视图生成器,而且流生成器的行为也类似于该循环。希望我的建议能解决你的问题。

你是最好的