flutter - Flutter:使用Streambuilder <QuerySnapshot>时如何在Firestore中获取特定文档

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

我的代码目前有问题,我正在尝试在数据库中获取特定的数据。我要执行的操作是“收集”>“我要获取的特定文档”>“字段(我的阵列数据)”。到目前为止,我有一个代码可以执行我想做的事情,但是问题是它仅获取文档中的第一个数据。请帮忙。

我的代码:

 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();
                  }
                })

我的数据库结构:

enter image description here

急需帮助。

最佳答案

您可以更改此:

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>(...));

关于flutter - Flutter:使用Streambuilder <QuerySnapshot>时如何在Firestore中获取特定文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759743/

相关文章:

http - 如何指向本地主机 :8000 with the Dart http package in Flutter?

Flutter:如何将 FloatingActionButton 附加到 AppBar?

mysql - http get API 查询云sql并以csv返回

flutter - 如何在 Flutter 中制作交互式通知

android - flutter 导入android.support.annotation.NonNull

flutter - 序列化 Dart 映射

flutter - 如何在 flutter 中创建类似 Tinder 的堆叠卡片?

dart - 装饰图像不被BoxDecoration剪切

java - Cloud Firestore 中自定义对象下的字段具有空值。如何避免这种情况?

firebase - 使用Firebase Auth和Firestore在流中调用Future