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

_InternalLinkedHashMap<dynamic, dynamic> firestore error in Dart

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

当我尝试使用 get() 检索文档时,我得到一个 DocumentSnapshot,然后我将其转换为 Map<String, dynamic>,它包含许多嵌套映射,例如上图。所以我用 .forEach 遍历它们,并且我成功地接收到值(用断点检查)。

现在因为我想在我的 UI 中显示它们,所以我将所有 嵌套地图 存储在 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>);
      });
    });

Whosebug 上有几个问题有同样的错误,但它们是关于 JSON 数据结构的,我无法解码它们以用于我的案例。

谢谢!

您必须将 _InternalLinkedHashMap<dynamic, dynamic> 转换为 Map<String, dynamic>。通过使用 forEach,您将拆分 DocumentSnapshot 的键和值。到目前为止一切都很好。现在该值的类型为 _InternalLinkedHashMap<dynamic, dynamic>。您必须将其转换为 Map<String, dynamic>.

将您的代码替换为:

dummyListMap.add(Map<String,dynamic>.from(mapValue));