我在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();
}
},
);
},
);
1条答案
按热度按时间kupeojn61#
问题是你仍然返回了一个空的Widget(
SizedBox.shrink()
),这就是为什么它被渲染为空白的原因,你需要做的是在返回GridView
widget之前准备好有效的数据。例如
现在您可以使用
validData
来为GridView
而不是snapshot.data?.docs
提供数据。