Streambuilder 返回空流 Flutter

时间:2021-04-06 14:44:33

标签: firebase flutter google-cloud-firestore stream-builder

我有这个 StreamBuilder,它有一个 ConnectionState 处于活动状态,但流里面没有文档。我正在使用 Firebase,当我控制集合 Chats 时,我可以看到其中有 1 个文档,所以我不明白为什么它的长度是 0

这是 StreamBuilder :

StreamBuilder<QuerySnapshot>(
        stream: widget.database.streamChats(widget.user),
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.active) {
            print(snapshot);
            print("Total elements in the stream : " +
                snapshot.data.docs.length.toString());
            snapshot.data.docs.forEach((element) async {
              ChatItem item = new ChatItem.fromDocument(element);
              print("Chat item is : ${item.id}");
              Artista receiver = await widget.database.getArtist(
                item.path,
                item.path.split("/").last,
              );
              ChatCard card = new ChatCard(
                database: widget.database,
                sender: widget.user,
                receiver: receiver,
              );
              list.add(card);
            });
            return SingleChildScrollView(
              child: Column(
                children: list,
              ),
            );
          } else {
            return CircularProgressIndicator();
          }
        },
      ),

这是Stream函数:

Stream<QuerySnapshot> streamChats(Artista sender) {
    return FirebaseFirestore.instance
        .collection("ids")
        .doc("tabs")
        .collection(sender.id[0].toLowerCase())
        .doc(sender.id[0].toLowerCase())
        .collection("chats")
        .snapshots();
  }

我需要说 ChatCard 只是一个 ListTile 所以基本上对于流中的每个文档都会创建一个数据结构( ChatItem ),并且从这个结构中遵循一个新的 Widget将显示给用户,ChatCard。此小部件将添加到一个列表中,该列表将作为 Column 的子项传递。

0 个答案:

没有答案