我的代码目前有问题,我正在尝试在数据库中获取特定数据。我要执行的操作是“收集”>“我要获取的特定文档”>“字段(我的阵列数据)”。到目前为止,我有一个代码可以执行我想做的事情,但是问题是它仅获取文档中的第一个数据。请帮忙。
我的代码:
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();
}
})
我的数据库结构:
非常需要帮助。
答案 0 :(得分: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>(...));