如何在查询不同集合的streambuilder中查询另一个集合?

时间:2020-07-26 22:25:43

标签: flutter dart google-cloud-firestore

我正在尝试从与流构建器之一不同的firestore集合中查询文档字段。现在,使用streambuilder,我可以查询所需的文档之一,但是我不知道如何在同一stream builder中查询另一个集合。我考虑过要使用另一个类的全局变量,在该类中我已经查询了我想要的文档,但是似乎没有用。

这是流构建器

Container(
              height: MediaQuery.of(context).size.height,
              margin: EdgeInsets.only(top: 0),
              padding: EdgeInsets.only(top: 0),
              child: StreamBuilder(
                  stream: Firestore.instance
                      .collection('Tournaments')
                      .document('Fortnite Tournaments')
                      .collection('Fortnite Tourneys')
                      .document(docID)
                      .snapshots(),
                  builder: (context, snapshot) {
                    if (!snapshot.hasData) {
                      return new Text("Loading");
                    }
                    var tourneyDetails = snapshot.data;
                    return ListView(
                      children: <Widget>[ 
                            ..........

我要查询的集合称为“用户”
为什么需要查询其他集合中的字段是因为我正在编写需要两个字段的if语句

if (int.parse("Field_i_am_trying_to_get_from_another_collection") > int.parse(tourneyDetails[ 'tourneycost']))
                               print('You have the money');                                                   
                                       else {
                                      print('You're broke');
                                        }

单击升高的按钮时将执行该条件。本质上,我的问题是我目前不确定如何查询其他集合中的数据。

不确定我的解释是否很好,但是如果您需要更多的上下文或代码,请发表评论。

1 个答案:

答案 0 :(得分:0)

您可以使用provider而不是创建全局变量。 请参阅提供者软件包:https://pub.dev/packages/provider

如果当前用户是您想要的用户,则可以在应用加载时从firestore中获取当前用户数据,并将用户提供给您要使用的位置。

如果您不知道提供者是什么,请参阅本文: Flutter StateManagement with Provider