Dart中的_InternalLinkedHashMap <dynamic,dynamic> firestore错误

问题描述

我已将Cloud Firestore设置为数据库,并正在使用地图检索文档,这是快照:

enter image description here

当我尝试使用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>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...