Firebase 为什么我在QuerySnapShot firestore flift上出错?

Firebase 为什么我在QuerySnapShot firestore flift上出错?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我试着用Flatter&firestore创建一个社交应用程序。 当我尝试在emulator上运行我的应用程序时,我遇到了如下错误。 类“QuerySnapshot”没有实例获取程序“documents”。 接收者:“QuerySnapshot”的实例 已尝试呼叫:文档 如何解决这个错误?我是弗利特和消防基地的新手。我可以感觉到,我的编码无法从CloudFireStore读取文档。但我不知道如何清除它 我的代码 import 'package:flutter/material.dart'; im

我试着用Flatter&firestore创建一个社交应用程序。 当我尝试在emulator上运行我的应用程序时,我遇到了如下错误。 类“QuerySnapshot”没有实例获取程序“documents”。 接收者:“QuerySnapshot”的实例 已尝试呼叫:文档

如何解决这个错误?我是弗利特和消防基地的新手。我可以感觉到,我的编码无法从CloudFireStore读取文档。但我不知道如何清除它

我的代码

import 'package:flutter/material.dart';
import 'package:mysuroo_in/widgets/indicators.dart';

typedef ItemBuilder<T> = Widget Function(
  BuildContext context,
  DocumentSnapshot doc,
);

class StreamBuilderWrapper extends StatelessWidget {
  final Stream<dynamic> stream;
  final ItemBuilder<DocumentSnapshot> itemBuilder;
  final Axis scrollDirection;
  final bool shrinkWrap;
  final ScrollPhysics physics;
  final EdgeInsets padding;

  const StreamBuilderWrapper({
    Key key,
    @required this.stream,
    @required this.itemBuilder,
    this.scrollDirection = Axis.vertical,
    this.shrinkWrap = false,
    this.physics = const ClampingScrollPhysics(),
    this.padding = const EdgeInsets.only(bottom: 2.0, left: 2.0),
  }) : super(key: key);


//Got error here
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: stream,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          var list = snapshot.data.documents.toList();
          return list.length == 0
              ? Padding(
                  padding: const EdgeInsets.only(top: 100.0),
                  child: Container(
                    height: 60.0,
                    width: 100.0,
                    child: Center(
                      child: Text('No Posts'),
                    ),
                  ),
                )
              : ListView.builder(
                  padding: padding,
                  scrollDirection: scrollDirection,
                  itemCount: list.length,
                  shrinkWrap: shrinkWrap,
                  physics: physics,
                  itemBuilder: (BuildContext context, int index) {
                    return itemBuilder(context, list[index]);
                  },
                );
        } else {
          return circularProgress(context);
        }
      },
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“package:mysuroo_in/widgets/indicators.dart”;
typedef ItemBuilder=小部件函数(
构建上下文上下文,
文档快照文档,
);
类StreamBuilderRapper扩展了无状态小部件{
最终河流;
最终项目生成器项目生成器;
终轴滚动方向;
最终bool收缩膜;
期末物理;
最终边缘填充;
康斯特河工({
关键点,
@需要这个.stream,
@需要此.itemBuilder,
this.scrollDirection=Axis.vertical,
this.shrinkWrap=false,
this.physics=const ClampingScrollPhysics(),
this.padding=const EdgeInsets.only(底部:2.0,左侧:2.0),
}):super(key:key);
//这里有错误
@凌驾
小部件构建(构建上下文){
返回流生成器(
小溪:小溪,
生成器:(上下文,快照){
if(snapshot.hasData){
var list=snapshot.data.documents.toList();
return list.length==0
?填充物(
填充:仅限常量边集(顶部:100.0),
子:容器(
身高:60.0,
宽度:100.0,
儿童:中心(
child:Text('No Posts'),
),
),
)
:ListView.builder(
填充:填充,
滚动方向:滚动方向,
itemCount:list.length,
包覆面提取:包覆面提取,
物理学:物理学,
itemBuilder:(构建上下文,int索引){
返回itemBuilder(上下文、列表[索引]);
},
);
}否则{
返回循环进程(上下文);
}
},
);
}
}
尝试使用

 var list = snapshot.data['documents'].toList();
因为数据参数是一个映射

或者,如果它不适合你,就用这个

var list = snapshot.data()['documents'].toList();

如果您在Flatter中使用新的firestore库,则必须使用

var list = snapshot.data.docs.toList()
而不是使用

var list = snapshot.data.documents.toList();

在流生成器中。

从新的firebase版本可以调用

docs() instead of documents()
以前

var list = snapshot.data.documents.toList();
之后


非常感谢你。。现在可以工作了。。我能再问你我有什么问题吗?当然有。随时可以。你好!祝你好运!你能回答我的另一个问题吗?->很抱歉,如果我使用你的两个解决方案,会出现同样的错误。但是无论如何谢谢你兄弟哦好的谢谢你。。
QuerySnapshot snap = snapshot.data;
var list = snap.docs;
//now you will have list of documents in the list