Firebase Dart-如何使StreamBuilder停止侦听事件
我正在使用StreamBuilder访问Firestore数据库的内容,并为这些内容创建列表平铺列表。我的问题是,每当我单击列表平铺时,我的StreamBuilder方法就会再次被调用,并使列表中所需的列表平铺数量加倍(因为我使用的是List.add()方法) 如何让StreamBuilder停止“重建”或“倾听”?我对Dart还比较陌生,所以我不知道该如何处理这个问题 下面是不断重复的代码。(为了这篇文章的目的,我审查了一些包含“…”的地方的信息):Firebase Dart-如何使StreamBuilder停止侦听事件,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在使用StreamBuilder访问Firestore数据库的内容,并为这些内容创建列表平铺列表。我的问题是,每当我单击列表平铺时,我的StreamBuilder方法就会再次被调用,并使列表中所需的列表平铺数量加倍(因为我使用的是List.add()方法) 如何让StreamBuilder停止“重建”或“倾听”?我对Dart还比较陌生,所以我不知道该如何处理这个问题 下面是不断重复的代码。(为了这篇文章的目的,我审查了一些包含“…”的地方的信息): var topics=newlist();
var topics=newlist();
var messages=新列表();
变量日期=新列表();
列表内容=新列表();
返回新的StreamBuilder(
流:Firestore.instance.collection(“集合id”).snapshots(),
生成器:(上下文,捕捉){
//只要加上这一行
if(snap.data==null)返回CircularProgressIndicator();
对于(int i=0;iReadContent(主题[i]、消息[i]、日期[i]),
);
},
),
装饰:新框装饰(边框:新边框(底部:新边框边()));
}//为了
返回新列(子项:内容);
});//StreamBuilder
}//showContent()
这是调用showContent()的有状态小部件的一个片段:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('App'),
),
body: Center(
child: new Container(
child: new SingleChildScrollView(
child: new Column(
children: <Widget>[
showContent(context),
],
),
),
),
),
);//Scaffold
}
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“应用程序”),
),
正文:中(
子容器:新容器(
子:新的SingleChildScrollView(
子:新列(
儿童:[
显示内容(上下文),
],
),
),
),
),
);//脚手架
}
一种方法是在向列表中添加数据时清除列表。
使用当前方法,如果一些新数据也到达,则数据将附加到列表中
,并导致数据重复
for (int i = 0; i < snap.data.documents.length; i++) {
topics.clear();//clear the items in list
topics.add(...);
messages.add(snap.data.documents[i]["message"].toString());
dates.add(...);
}
for(int i=0;i
for (int i = 0; i < snap.data.documents.length; i++) {
topics.clear();//clear the items in list
topics.add(...);
messages.add(snap.data.documents[i]["message"].toString());
dates.add(...);
}