繁体   English   中英

Null 检查运算符用于 null 值 FirebaseFirestore

[英]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 是一个优化的数据库。 因此,您必须为复杂查询 创建复合索引,例如您正在执行的查询(将orderBywhere组合)才能正常工作。

要解决此问题,请查看您运行 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM