Firebase 如何在gridview中只返回我想要的内容?
我使用的是Firebase 如何在gridview中只返回我想要的内容?,firebase,flutter,gridview,google-cloud-firestore,Firebase,Flutter,Gridview,Google Cloud Firestore,我使用的是GridView,我试图仅在条件为真时返回某个值,但如果条件为假,它将返回一个CircularProgressIndicator,如果我删除CircularProgressIndicator,我将有一个白色屏幕。您知道如何在GridView中只打印所需内容吗 这是我的代码: return new GridView.count( crossAxisCount: 2, children: snapshot.data.documents .map((Docum
GridView
,我试图仅在条件为真时返回某个值,但如果条件为假,它将返回一个CircularProgressIndicator
,如果我删除CircularProgressIndicator
,我将有一个白色屏幕。您知道如何在GridView
中只打印所需内容吗
这是我的代码:
return new GridView.count(
crossAxisCount: 2,
children: snapshot.data.documents
.map((DocumentSnapshot document) {
if (document['id'] == nomines[0] ||
document['id'] == nomines[1])
return Container(
child: InkWell(
onTap: () {
vote(document['id']).then((a) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
Waitresults(),
));
});
},
child: OvalPic(
document['photo'], document['couleur']),
),
); else
return CircularProgressIndicator();
}).toList());
您可以这样做:
snapshot.data.documents.map(
(d) =>条件?容器():空
)托利斯先生()
..移除其中((el)=>el==null);
我假设您正在从FutureBuilder
获取snapshot
,试试这个
FutureBuilder(
future: ...,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
else if (snapshot.hasError)
return Center(child: Text("ERROR: ${snapshot.error}"));
else {
final children = <Widget>[];
snapshot.data.documents.forEach((doc) {
if (document['id'] == nomines[0] ||
document['id'] == nomines[1])
children.add(
Container(
child: InkWell(
onTap: () {
vote(document['id']).then((a) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
Waitresults(),
),
);
});
},
child: OvalPic(document['photo'], document['couleur']),
),
),
);
});
return new GridView.count(
crossAxisCount: 2,
children: children,
);
}
},
);
FutureBuilder(
未来:。。。,
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.waiting)
返回中心(子项:CircularProgressIndicator());
else if(snapshot.hasrerror)
返回中心(子项:文本(“错误:${snapshot.ERROR}”);
否则{
最终子女=[];
snapshot.data.documents.forEach((doc){
如果(文档['id']==名称[0]||
文件['id']==名称[1])
children.add(
容器(
孩子:InkWell(
onTap:(){
投票(文件['id'])。然后((a){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>
Waitresults(),
),
);
});
},
儿童:OvalPic(文件['photo',文件['couleur'),
),
),
);
});
返回新的GridView.count(
交叉轴计数:2,
儿童:儿童,,
);
}
},
);
这也是同样的问题,我只想返回包含2个元素的gridview,没有circularprogressindicator,但不能返回null。我不知道怎么做:/