为什么我不能在颤振中使用FirebaseFirestore.instance中的where和orderby



为什么我不能使用where&由FirebaseFirestore在颤振中订购

在我的代码中

body: StreamBuilder(
stream: FirebaseFirestore.instance
.collection('Posts')
.where('imageType', isEqualTo: 'image')
.orderBy('time', descending: true) 
.snapshots(),
builder: (context,
AsyncSnapshot<QuerySnapshot<Map<String, dynamic>>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(
child: CircularProgressIndicator(),
);
}
return ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: (context, index) => PostCard(
snap: snapshot.data!.docs[index],
),
);
},
),

我会出错的。

itemCount: snapshot.data!.docs.length

错误代码

Exception has occurred.
_CastError (Null check operator used on a null value)

哪里有问题?

数据可能为null,因此请使用snapshot.Data!bang操作符会给你那个错误。通过使用!您基本上告诉编译器,您承诺在该点上该值不会为null。然而,在您的情况下:(

考虑实现某种加载指标,当你得到实际数据时,它会被返回,而不是你正在构建的任何指标:(

where和orderBy与您的问题无关btw.

您可以使用类似加载指示器的东西来等待数据到来,这样它就不会是空的

例如,在流生成器中,您可以使用类似的东西

if (!snapshot.hasData)
return Center(
child: CircularProgressIndicator());
return TheWidgetYouWantToBuildWhenDataComes();

最新更新