问题描述
我已将Cloud Firestore设置为数据库,并正在使用地图检索文档,这是快照:
当我尝试使用get()
检索文档时,我得到一个DocumentSnapshot
,然后将其转换为Map<String,dynamic>
,它由许多嵌套的地图组成,如上图所示。 。因此,我使用.forEach
遍历了它们,并成功接收了值(已使用断点检查)。
现在,因为我想在用户界面中显示它们,所以将所有嵌套地图存储在List()
中,但是当我尝试添加它们时,出现此错误:
日志:
type '_InternalLinkedHashMap<dynamic,dynamic>' is not a subtype of type 'Map<String,dynamic>' in type cast
代码:
List<Map<String,dynamic>> dummyListMap = new List();
await docRef.get().then((value) {
value.data.forEach((key,mapValue) {
dummyListMap.add(mapValue as Map<String,dynamic>);
});
});
关于StackOverflow的几个问题也有相同的错误,但它们与JSON数据结构有关,因此我无法对其进行解码以用于我的情况。
谢谢!
解决方法
您必须将require('dotenv').config();
转换为_InternalLinkedHashMap<dynamic,dynamic>
。通过使用Map<String,dynamic>
,您可以拆分forEach
的键和值。到目前为止,一切都很好。现在,该值的类型为DocumentSnapshot
。您将不得不将其转换为_InternalLinkedHashMap<dynamic,dynamic>
。
用以下代码替换您的代码:
Map<String,dynamic>