Flutter 给出空错误,但在重启后有效

Flutter gives null error, but works after restart

我是 Flutter 的新手,我正在尝试从 firestore 集合中获取数据。我将 FutureBuilder 与 Provider 一起使用,但它在初始时显示 null 错误并在重新启动应用程序后完美运行。

这是获取数据的代码:

                FutureBuilder<QuerySnapshot>(
                    future: FirebaseFirestore.instance
                        .collection(collec.collectionProducts)
                        .get(),
                  builder: (context, snapshot) {
                    return Consumer<CartItemCounter>(
                      builder: (BuildContext context, CartItemCounter cart, _) {
                        if (cart.checkProductAddedToCart(model.productId)) {
                          return Row(....);

错误

futureb 代码uilder

代码 ui (这里我更改了集合名称)

我该如何解决。我已经尝试了在线提供的所有解决方案。谢谢

为未来的构建器始终检查结果,即快照有数据。

根据快照的状态设置开关条件或 if-else 块。

查看官方文档中的示例here

哪里出错了?

据此,问题出在您的Consumer<CartItemCounter>

错误是什么意思?

这个错误,The method 'x' was called on null.,意思是写这个x函数的class,那个class是空的。

我的代码出现这个错误的原因是什么?

您的 Consumer<CartItemCounter> 提供了一个名为 cartCartItemCounter 实例。然后,你调用函数 checkProductAddedToCart.

错误消息告诉您 cart 是 null,这是由 Consumer 小部件提供给您的。这意味着消费者可能也没有找到那个提供者。我希望 Provider 应该有一个错误日志,告诉您找不到 CartItemCounter。

可能的解决方案

尝试“提供”CartItemCounter。

你是怎么做到的?转到应用程序的小部件树的顶部 MaterialApp,将其包装在 MultiProviderChangeNotifierProvider 中,然后将新的 CartItemCounter 作为 value.

传递

阅读 Official Provider Docs 了解有关如何公开提供程序的更多信息。

您需要上传完整的日志,以便我进一步帮助您。