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。我不知道怎么做:/