1

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

这是获取数据的代码:

                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(....);

错误 错误图像

未来建造者的代码 小部件代码

ui 的代码 ui小部件代码 (这里我更改了集合名称)

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

4

2 回答 2

1

错误来自哪里?

据此,问题来自您的Consumer<CartItemCounter>.

错误是什么意思?

这个错误,The method 'x' was called on null.,意味着x编写这个函数的类,那个类是空的。

我的代码中出现此错误的原因是什么?

Consumer<CartItemCounter>提供了一个CartItemCounter名为的实例cart。然后,您调用 function checkProductAddedToCart

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

可能的解决方案

尝试“提供” CartItemCounter。

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

阅读官方提供者文档以获取有关如何公开提供者的更多信息。

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

于 2021-02-24T08:44:23.167 回答
0

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

根据快照的状态放置一个 switch 条件或 if-else bock。

在此处查看官方文档中的示例

于 2021-02-23T09:20:59.250 回答