Flutter:使用 Streambuilder<QuerySnapshot> 时如何在 firestore 中获取特定文档
Posted
技术标签:
【中文标题】Flutter:使用 Streambuilder<QuerySnapshot> 时如何在 firestore 中获取特定文档【英文标题】:Flutter: How to get a specific document in firestore when using Streambuilder<QuerySnapshot> 【发布时间】: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();
)
我的数据库结构:
急需帮助。
【问题讨论】:
【参考方案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先生。你是唯一一直帮助我的人。非常尊重你。以上是关于Flutter:使用 Streambuilder<QuerySnapshot> 时如何在 firestore 中获取特定文档的主要内容,如果未能解决你的问题,请参考以下文章
来自一个 StreamBuilder 的 Flutter 快照显示在另一个 StreamBuilder 中
如何在 Flutter 的 StreamBuilder 中使用 Future [重复]