首页 > 解决方案 > Flutter,内部流构建器,如何根据未来获取流?

问题描述

我想要基于高于某个值的标签从我的 firebase 集合中发布一列帖子。由于我的值嵌套在单独的集合和文档中,因此我需要等待未来才能返回我的流。


帖子[集合]->帖子[文档]->标签[集合]->标签[文档]->值[字段]


代码根本不起作用,但我想做的是这样的:

StreamBuilder(

              stream:

              FirebaseFirestore.instance.collection("posts").snapshots().where((post) {

                return FirebaseFirestore.instance.collection("posts")
        .doc(post.id).collection("tags").doc("favorites")["value"] > 5;

               
              }
          ),

builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {

    return Column(children: snapshot.map((e) => PostCard(post: e)).toList());

}

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


我建议你创建一个新的collection "tags"

并流式传输该集合..

    return StreamBuilder<QuerySnapshot<Map<String, dynamic>>>(
      stream: FirebaseFirestore.instance.collection("tags").where('favorites', isGreaterThan: 5).snapshots(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) return Center(child: CircularProgressIndicator());
        return Column(children: snapshot.data.docs.map((e) => PostCard(post: e)).toList());
      },
    );
  

推荐阅读