当前位置: 首页 > 知识库问答 >
问题:

Flutter-类“DocumentSnapshot”没有实例getter“docs”

邓浩漫
2023-03-14

我的代码中有两个流,第一个是从朋友列表中获取用户ID,第二个流是使用ID列表在Firebase中搜索用户ID的文档。

Stream friendIDStream;
Stream friendNameStream;

Widget friendList() {
    return StreamBuilder(
      stream: friendNameStream,
      builder: (context, snapshot) {
        return snapshot.hasData
            ? ListView.builder(
                itemCount: snapshot.data.docs.length,
                itemBuilder: (context, index) {
                  return FriendTile(
                      snapshot.data.docs[index].data()["username"]);
                },
              )
            : Container();
      },
    );
  }

  @override
  void initState() {
    getUserFriend();
    getNameByID();
    super.initState();
  }

  getUserFriend() async {
    Constant.currentId =
        await HelperFunctions.getUserIdSharedPreference(Constant.currentId);
    setState(() {
      firebaseMethods.getFriend(Constant.currentId).then((value) {
        setState(() {
          friendIDStream = value;
        });
      });
    });
  }

  getNameByID() {
    setState(() {
      firebaseMethods.getFriendName(friendIDStream).then((value) {
        setState(() {
          friendNameStream = value;
        });
      });
    });
  }

这是火力恢复代码。

  Future getFriend(String ownerid) async {
    return await FirebaseFirestore.instance
        .collection("users")
        .doc(ownerid)
        .collection("friends")
        .snapshots();
  }

  Future getFriendName(friendid) async {
    return await FirebaseFirestore.instance
        .collection("users")
        .doc(friendid)
        .snapshots();
  }

我不知道为什么会发生这种情况,因为我可以显示id列表。我曾尝试将docs更改为doc,但也会产生相同的错误。

编辑:

共有1个答案

谭铭
2023-03-14

原因是函数getFriendName返回的是documentsnapshot,而不是querysnapshot。因此,请用以下代码替换旧代码:-

Widget friendList() {
    return StreamBuilder(
      stream: friendNameStream,
      builder: (context, snapshot) {
        return snapshot.hasData
            ? ListView.builder(
                itemCount: 1,
                itemBuilder: (context, index) {
                  return FriendTile(
                      //snapshot.data.docs[index].data()["username"] old one
                        snapshot.data["username"]); //new one
                },
              )
            : Container();
      },
    );
  }
 类似资料:
  • 我最近开始使用Firebase fiRecovery,这是一个我似乎找不到答案的错误,我在查看类似问题的答案后尝试将snapshot.data.documents编写为文档、文档和文档,但它仍然抛出相同的错误。我该怎么办?我正在使用的fiRecovery版本是cloud_firestore:^1.0.7 它引发的异常

  • 我正在遵循一个教程,试图创建一个水平的SingleChildScrollView,它包含带有产品描述的对象和带有两个小数的货币+价格标签。实现NumberFormat.Currency方法返回一个错误:NosuchMethodeRorr类“String”没有实例getter“is negal” 有人能帮助理解为什么它不拉“价格”价值吗?如果我对其进行硬编码,并为最终的双倍价格赋值=IE:29.90

  • 我是从火神那里收取数据的,我有这个,我是火神的新手,我知道的不多,所以你能帮我吗? 错误是这样的:类'AsyncSnapshot'没有实例getter'docs'。接收器:'AsyncSnapshot'的实例尝试调用:docs

  • 你能帮我解决这个问题吗?我试图从存储在sqflite中的数据返回一个FutureBuilder,返回它并用它构建一个小部件列表,但我遇到了一个小问题,我不知道如何以正确的方式返回列表: 我得到的错误是: 下面是我的消息类: 我是这样称呼它的。我的问题在于我调用并试图使用快照数据的地方。然后我实例化BeautifulBubble类,我认为这是可以的。 同时添加dbhelper.getmessages

  • 我有一个应用程序,我想从Firestore数据库中检索uid文档中表示的消息,如下所述,这些消息存储如下:聊天室- 但我收到以下错误: 生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:\u StreamBuilderBaseState 导致错误的相关小部件是:StreamBuilderfile:///Users/ahmedhussain/Downloads/

  • 嗨,我试图使用strut得到一个bean到我的jsp代码,我在我的jsp页面中使用的bean是:但是每当我运行jsp时,我就会收到 bean的“unitForm”的属性“testData.team.type”没有getter方法。 我正在尝试将棒球写入我的JSP页面。 我的行动表单的代码是: 测试数据类具有: 最后在我的体育课上: