Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 颤振给出空错误,但在重新启动后工作_Firebase_Flutter_Google Cloud Firestore_Stream Builder_Flutter Futurebuilder - Fatal编程技术网

Firebase 颤振给出空错误,但在重新启动后工作

Firebase 颤振给出空错误,但在重新启动后工作,firebase,flutter,google-cloud-firestore,stream-builder,flutter-futurebuilder,Firebase,Flutter,Google Cloud Firestore,Stream Builder,Flutter Futurebuilder,我是个新手,我正在尝试从firestore收集中获取数据。我将FutureBuilder与Provider一起使用,但它在初始化时显示空错误,并在重新启动应用程序后完美运行 以下是获取数据的代码: FutureBuilder<QuerySnapshot>( future: FirebaseFirestore.instance .collection(collec.c

我是个新手,我正在尝试从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(....);
FutureBuilder(
未来:FirebaseFirestore.instance
.收集(集合收集产品)
.get(),
生成器:(上下文,快照){
退货消费者(
生成器:(BuildContext上下文,CartItemCounter购物车,ux){
if(cart.checkProductAddedToCart(model.productId)){
返回行(…);
错误

futurebuilder代码

用户界面代码 (此处我已更改集合名称)


我如何解决它。我已经尝试了在线上提供的所有解决方案。谢谢您始终检查结果以备将来构建器使用,即snapshot有数据

根据快照的状态设置一个切换条件或是否切换


检查官方文档中的示例

错误来自何处?

根据这一点,问题来自您的
消费者

错误是什么意思?

此错误,
方法“x”在null上被调用。
表示编写此
x
函数的类为null

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

您的
消费者
通过名称
购物车
提供了一个
购物车计数器
的实例。然后,您调用函数
checkProductAddedToCart

错误消息告诉您,
消费者
小部件提供给您的
购物车
为空。这意味着消费者可能也没有找到该提供商。我希望
提供商
应该有一个错误日志,告诉您没有找到CartItemCounter

可能的解决方案

尝试“提供”CartItemCounter

如何做到这一点?转到应用程序窗口小部件树的顶部,转到
MaterialApp
,将其包装在
MultiProvider
ChangeNotifierProvider
中,然后将新的CartItemCounter作为
值传递给用户

有关如何公开提供程序的详细信息,请阅读


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

屏幕上是否显示一个循环压缩机指示器?是的,暂时确保集合和where条件正确,
snap.data.documents.length
为您提供了什么?它为空。因为集合和条件是确定的,如果我如果给定null,那么您将什么也得不到,
打印什么(itemHolder)
给你?是的,它有。因为循环进度没有显示。而且它在重新启动应用程序后开始工作。错误只在我第一次用开关块检查时出现,有数据可用,但仍然有相同的错误。在访问meth之前,尝试用if条件包装你的
购物车,检查它是否为空od
checkProductAddedToCart
ChangeNotifierProvider(创建:(c)=>CartItemCounter()),是的,我已经在main.dartYes中添加了提供程序。它工作了。我正在使用ChangeNotifierProvider(创建:(c)=>CartItemCounter()。添加时,ChangeNotifierProvider.value(值:CartItemCounter()),我开始在长度上出现空错误。最后我添加了这两个。现在它开始工作了。愚蠢的我这件事花了一整天。谢谢你,伙计。嘿,它工作得很好,但我没有注意到一件事,当我重新启动应用程序时,存储在Map object中的所有数据都被删除。我如何避免它?或者我如何存储它?你必须将购物车项目保存到当应用程序启动时,设备的本地存储和从那里重新加载。最简单和最快的方法是Hive插件。研究一下。