我想按日期对应用程序中的帖子进行排序,但当我使用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是一个优化的数据库.因此,您必须为复杂查询设置create composite indexes,如您正在执行的查询(orderBywhere的组合),才能正常工作.

要解决此问题,请查看您正在运行Flutter 的日志(log).您应该会看到一个Firebase控制台链接,它将 bootstrap 您直接创建查询.创建查询,等待5分钟或更短时间以构建查询,然后重试代码.应该能行得通.

Flutter相关问答推荐

Flutter 导致底部溢出

Riverpod状态管理-在调用请求时更新用户界面

如何在默认情况下隐藏appBar并在向下滚动时显示它- Flutter

Flutter 隔离.使用多个参数运行

如何使用flutter_local_notification包处理通知操作?

Supabase Auth:重定向到 Google.com 而不是我的应用程序

如何在Flutter 中使用选定的键和值从 map 列表创建 map

Flutter:我的应用程序是否需要包含退款购买?

Flutter 中的 Provider 不会在第一次构建 App 时返回

Flutter / 为什么当我点击我的图片时我的模型没有更新?

如何将行推到列的底部

如何从sibling ChildWidgetB 触发 ChildWidgetA 中的操作

对话框打开时如何使背景模糊?

如何在 Flutter 中将 ScaffoldMessenger 中的 Snackbar 显示为 Widget?

仅使用 Flutter 在本地环境中托管 Web 服务器

如何在 flutter 中制作这种类型的扩展瓦片

Flutter 活跃的互联网连接

如何在Flutter 中水平滚动堆叠定位的小部件?

解密 Modulr 安全令牌

如何从用户 Flutter 导航抽屉中隐藏管理菜单