问题描述
我正在尝试仅显示集合中的某些数据。在我的示例中,我只想显示列表中的数据,其中Firebase上名称中的集合等于小部件的名称。我无法解决这个问题
Expanded(
child: Container(
child: FutureBuilder(
future: getPosts(),builder: (_,snapshot){
if(snapshot.data["name"]== widget.info.name){
return ListView.builder(
itemCount:
x,itemBuilder: (_,index){
return ListTile(
title: Text(snapshot.data[index].data["name"]),);
});
解决方法
Expanded(
child: Container(
child: FutureBuilder(
future: getPosts(),builder: (_,snapshot){
return ListView.builder(
itemCount:
snapshot.data,itemBuilder: (_,index){
if(snapshot.data["name"]== widget.info.name){
return ListTile(
title:Text(snapshot.data[index].data["name"]),);
}else{
return Container();
}
})}))
);
,
一个更好的选择是在您定义的getPosts()
函数中传递小部件名称,并更新firebase查询以进行过滤。这样,因为Firebase进行了需要索引,并且将在O(len(filtered_elements))
中进行过滤,而不是O(len(all_elements))
的当前时间复杂度,所以速度要快得多。