在GridView Flutter中获取空格

lf3rwulv  于 2023-01-18  发布在  Flutter
关注(0)|答案(1)|浏览(127)

我在GridView.builder中得到空格,同时显示快照数据。我想这是因为我在GridView.builder中应用了条件,所以它留下了空格。有什么办法可以克服这个问题吗?

StreamBuilder(
    stream: fireStore,
    builder: (context, snapshot) {
      if (!snapshot.hasData) {
        return const Center(child: CircularProgressIndicator());
      }

      return  GridView.builder(
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, 
          mainAxisExtent: MediaQuery.of(context).size.width/1.5),
          itemCount: snapshot.data?.docs.length,
          itemBuilder: (context, index) {
            

            if (snapshot.data?.docs[index]["userType"] == "1" &&
                snapshot.data?.docs[index]["about"] != "") {
              return cardWidget(snapshot, index);
            } else {
              return SizedBox.shrink();
            }
          },
        );
    },
  );

kupeojn6

kupeojn61#

问题是你仍然返回了一个空的Widget(SizedBox.shrink()),这就是为什么它被渲染为空白的原因,你需要做的是在返回GridView widget之前准备好有效的数据。
例如

final validData = snapshot.data?.docs.where((d)=> d['userType']==1 && d['about']!= 'data').toList();

现在您可以使用validData来为GridView而不是snapshot.data?.docs提供数据。

相关问题