- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个集合,每个用户都有自己的文档。在文档中,我为新条目创建了一个映射。该文件将如下所示:
在我的应用程序中,我想获取该文档,然后将其转换为一个列表,其中每个 map (按时间命名)都是一个条目。我尝试遍历它,但问题是 DocumentSnapshot.data()
中没有 forEach()它是 _JsonDocumentSnapshot
的类型.
我怎样才能把它作为一个列表,其中 2021-05-30 20:49:59.671705
, 2021-05-30 20:50:00:600294
, ... 是列表中的单个元素。我计划使用诸如 ListView.builder()
之类的东西自行构建每个条目。所以我想列出所有这些条目。
编辑:
我的代码看起来像这样:journal
只是一个 DocumentReference
.
journal.snapshots().forEach((element) {
var data = element.data();
print(element.data());
(data ?? {}).forEach((key, value) {
return JournalEntryData(
date: key,
entryText: value['entryText'],
feeling: value['feeling']);
});
});
最佳答案
问题是 data
的类型设置为 element.data()
是 Object?
因此 forEach()
方法没有定义。我尝试类型转换 element.data()
作为 List
这导致了错误,所以我没有沿着这条路走得更远。我应该做的是投 element.data()
作为 Map
哪个有效。我也应该用过 journal.get()
而不是 snapshots()
因为它是一条流,所以 await
关键字将导致 journal.snapshots().forEach()
永无止境。
最终代码如下所示:
Future<List<JournalEntryData>> getJournalEntries() async {
List<JournalEntryData> entries = [];
await journal.get().then((document) {
Map data = (document.data() as Map);
data.forEach((key, value) {
print('adding entry');
entries.add(JournalEntryData(
date: key,
entryText: value['entryText'],
feeling: value['feeling'],
));
});
});
return entries;
}
我会执行以下操作来获取条目:
var entries = await getJournalEntries();
关于firebase - Flutter:如何循环遍历 `DocumentSnapshot.data()` 中的每个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67763696/
我是一名优秀的程序员,十分优秀!