【问题标题】:Flutter: How to get a specific document in firestore when using Streambuilder<QuerySnapshot>Flutter:使用 Streambuilder<QuerySnapshot> 时如何在 firestore 中获取特定文档
【发布时间】:2020-03-04 16:24:57
【问题描述】:

我的代码目前有问题,我试图在我的数据库中获取特定数据。我想做的是收集>我想要获取的特定文档>字段(我的数组数据)。截至目前,我有一个代码,它可以执行我正在尝试执行的操作,但问题是它只获取了我文档中的第一个数据。请帮忙。

我的代码:

 StreamBuilder<QuerySnapshot>(
                stream: db.collection('NOTIFICATION').snapshots(),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    return Column (
                        children: snapshot.data.documents.first['Respondent']
                            .map<Widget>((respondent) => buildItem(respondent))
                            .toList());
                  } else {
                    return SizedBox();
                  }
                })

我的数据库结构:

急需帮助。

【问题讨论】:

    标签: flutter dart google-cloud-firestore flutter-layout


    【解决方案1】:

    你可以改变这个:

    snapshot.data.documents.first['Respondents'];
    

    为此:

    snapshot.data.documents.firstWhere((doc) => doc.documentID == 'id')['Respondents'];
    

    处理不同的情况:

    var doc = snapshot.data.documents
        .firstWhere((doc) => doc.documentID == 'id', orElse: () => null);
    if (doc == null) {
      return Text('Document doesn\'t exist');
    } else if (doc['Respondents'] == null) {
      return Text('Document without respondents');
    } 
    return Column(children: doc['Respondents'].map<Widget>(...));
    

    【讨论】:

    • 它似乎在说坏状态:没有元素先生@pablo。
    • 它工作先生@pablo,但问题是如果没有用于参考的“id”上的数据。它显示了“坏状态:无元素”的无限循环,我该如何解决这个问题?我试图只输出一个容器或一个大小的盒子,但它不起作用。
    • 它仍然显示“坏状态:无元素”先生的无限循环:(
    • 我还应该把它包装在 if(snapshot.hasdata){ } 中吗?
    • 它现在可以工作了!非常感谢@pablo先生。你是唯一一直帮助我的人。非常尊重你。
    猜你喜欢
    • 2021-10-22
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2021-10-03
    • 2021-02-28
    相关资源
    最近更新 更多