[英]Null check operator used on a null value FirebaseFirestore
我想按日期对我的应用程序中的帖子进行排序,但是当我使用 orderby 时,我得到一个null check operator used on a null value
错误。 问题是当我输入“where”和“orderby”时出现问题。
我的代码如下:
StreamBuilder(
stream: FirebaseFirestore.instance
.collection('posts')
.where('uid', isEqualTo: widget.uid)
.orderBy(
'datePublished',
descending: true,
)
.snapshots(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(
child: CircularProgressIndicator(),
);
}
return ListView.builder(
primary: false,
shrinkWrap: true,
itemCount: (snapshot.data! as dynamic).docs.length,
itemBuilder: (context, index) {
DocumentSnapshot snap =
(snapshot.data! as dynamic).docs[index];
Firestore 是一个优化的数据库。 因此,您必须为复杂查询 创建复合索引,例如您正在执行的查询(将orderBy
与where
组合)才能正常工作。
要解决此问题,请查看您运行 Flutter 的日志。 您应该会看到 Firebase 控制台链接,该链接将带您直接创建查询。 创建查询,等待 5 分钟或更短的时间使其构建,然后再次尝试代码。 它应该工作。
再添加 1 个条件
if (snapshot.data == null) {
return const Center(
child: CircularProgressIndicator(),
);
}
因为 stream 可以返回 null 值然后是 snapshot.data。 作为动态错误。 请检查 snapshot.hasData
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.