gpt4 book ai didi

firebase - Flutter:如何循环遍历 `DocumentSnapshot.data()` 中的每个字段

转载 作者:行者123 更新时间:2023-12-04 17:18:29 25 4
gpt4 key购买 nike

我有一个集合,每个用户都有自己的文档。在文档中,我为新条目创建了一个映射。该文件将如下所示:
Sample Document
在我的应用程序中,我想获取该文档,然后将其转换为一个列表,其中每个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com