Firebase Flatter/Firestore:Class';QuerySnapshot';没有实例getter';文件';

Firebase Flatter/Firestore:Class';QuerySnapshot';没有实例getter';文件';,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我有一个应用程序,我想从Firestore数据库检索uid文档中表示的消息,如下所述,这些消息存储如下: 聊天室->聊天室ID->聊天->uid->消息 但我收到了这个错误: 生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:_StreamBuilderBaseState#56cb5):类“QuerySnapshot”没有实例 getter“文档”。接收者:“QuerySnapshot”的实例已尝试 电话:文件 导致错误的相关小部件是:StreamBuild

我有一个应用程序,我想从Firestore数据库检索uid文档中表示的消息,如下所述,这些消息存储如下: 聊天室->聊天室ID->聊天->uid->消息

但我收到了这个错误:

生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:_StreamBuilderBaseState#56cb5):类“QuerySnapshot”没有实例 getter“文档”。接收者:“QuerySnapshot”的实例已尝试 电话:文件

导致错误的相关小部件是:StreamBuilder file:///Users/ahmedhussain/Downloads/khamsat/Client%20Apps/HPX-KSA/hpx_KSA/lib/Screens/messages.dart:21:12 引发异常时,这是堆栈: #0 Object.noSuchMethod(省道:核心补片/对象补片。省道:53:5) #1 _MessagesState.chatRoomList。(软件包:hpxksa/屏幕/消息。dart:25:38)

这是我的密码:

class _MessagesState extends State<Messages> {
  
  Stream chatRoomsStream;

  Widget chatRoomList(){
    return StreamBuilder(
      stream: chatRoomsStream,
      builder: (context, snapshot){
        return snapshot.hasData ? ListView.builder(
            itemCount: snapshot.data.document.length,
            itemBuilder: (context, index){
              return ChatRoomTile(
                 username: snapshot.data.documents[index].data["chatRoomId"]
                      .toString().replaceAll("_", "").replaceAll(Constants.myName, "replace"),
                  chatRoomId:snapshot.data.documents[index].data["chatRoomId"]
              );
            }) : Container();
      }
      );
  }

  getUserInfogetChats() {
    DatabaseService().getChatRooms(Constants.myName).then((value) {
      setState(() {
        chatRoomsStream = value;
      });
    });
  }

  @override
  void initState() {
    getUserInfogetChats();
    super.initState();
  }


@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: chatRoomList(),
    );
  }
}


class ChatRoomTile extends StatelessWidget {
  final String username;
  final String chatRoomId;
  ChatRoomTile({this.username, this.chatRoomId});

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: (){
        Navigator.push(context, MaterialPageRoute(builder: (context)=>Conversation(chatRoomId: chatRoomId,)));
      },
      child: Container(
        color: Colors.black26,
        padding: EdgeInsets.symmetric(horizontal: 24, vertical: 16),
        child: Row(
          children: <Widget>[
            Container(
              height: 40,
              width: 40,
              alignment: Alignment.center,
              decoration: BoxDecoration(
                color: kPrimaryColor,
                borderRadius: BorderRadius.circular(40),
              ),
              child: Text("${username.substring(0,1).toUpperCase()}"),
            ),
            SizedBox(width: 8,),
            Text(username),
          ],
        ),
      ),
    );
  }
}

您收到的错误非常清楚问题是什么
QuerySnapshot
没有
文档
属性。您可能打算使用该属性,这与您尝试使用
列表视图
更为一致


snapshot.data.document
的实例更改为
snapshot.data.documents
将解决此特定问题。

您收到的错误非常清楚问题所在
QuerySnapshot
没有
文档
属性。您可能打算使用该属性,这与您尝试使用
列表视图
更为一致

  return StreamBuilder(
      stream: chatRoomStream,
      builder: (context, snapshot) {
        return snapshot.hasData
            ? ListView.builder(
                itemCount: snapshot.data.docs.length,
                itemBuilder: (context, index) {
                  return ChatRoomTile(
                      **snapshot.data.docs[index].data()['chatRoomId']**);
                },
              )
            : Container();
      },
    );


snapshot.data.document
的实例更改为
snapshot.data.documents
将解决此特定问题。

您的问题是什么?此错误:类“QuerySnapshot”没有实例获取程序“document”。接收者:“QuerySnapshot”的实例尝试调用:document这不是问题。你想完成什么?整个问题只是一条错误消息和代码。我正试图根据文档ID从firestore检索数据。您能否进一步说明您如何在firestore中构建数据?您的问题是什么?此错误:类“QuerySnapshot”没有实例获取器“document”。接收者:“QuerySnapshot”的实例尝试调用:document这不是问题。你想完成什么?整个问题只是一条错误消息和代码。我正试图根据文档ID从firestore检索数据。您能否进一步说明您在firestore中如何构建数据?这可能是完全相同的错误吗<代码>文档不应存在于代码中的任何位置。请重新发布此错误。以下是我在将其更改为docs后收到的内容:“QuerySnapshot”类没有实例getter“docs”。接收者:“QuerySnapshot”的实例尝试调用:docs您正在使用哪个包<代码>云商店?或者
firebase
?假设您使用的是
cloud\u firestore
,我已经编辑了我的答案。这是一个简单的打字错误。怎么会是完全相同的错误呢<代码>文档不应存在于代码中的任何位置。请重新发布此错误。以下是我在将其更改为docs后收到的内容:“QuerySnapshot”类没有实例getter“docs”。接收者:“QuerySnapshot”的实例尝试调用:docs您正在使用哪个包<代码>云商店?或者
firebase
?假设您使用的是
cloud\u firestore
,我已经编辑了我的答案。这是一个简单的打字错误。cloud_FireStore将“文档”更改为“文档”,并将“数据['chatRoomId']”更改为“数据()['chatRoomId']”。虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请您在回答中添加解释,并说明适用的限制和假设。将“文档”更改为“文档”,并将“数据['chatRoomId']”更改为“数据()['chatRoomId']”,虽然此代码可能会解决问题,但如何以及为什么解决此问题会真正有助于提高您的帖子质量,而且可能会得到更多的支持票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
  return StreamBuilder(
      stream: chatRoomStream,
      builder: (context, snapshot) {
        return snapshot.hasData
            ? ListView.builder(
                itemCount: snapshot.data.docs.length,
                itemBuilder: (context, index) {
                  return ChatRoomTile(
                      **snapshot.data.docs[index].data()['chatRoomId']**);
                },
              )
            : Container();
      },
    );