无法将_InternalLinkedHashMap<字符串,动态>转换为映射<字符串,动态>



我正在尝试从cloud_firestore获取数据。

void _getData(){
final getData = await FirebaseFirestore.instance
.collection('users')
.doc(id)
.get();
Map<String, dynamic> d = getData.data()!;
for (dynamic i in d["tags"]) {
.......
}
}

但是当调用_getData()时,for (dynamic i in d["tags"])发生错误。

_TypeError (type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>')

我找到了这个答案并更改了我的代码。

Map<String, dynamic> d = getData.data()!;

Map<String, dynamic> d = Map<String, dynamic>.from(getData.data()!);

但是这个错误永远不会被修复。

我不想在没用的_InternalLinkedHashMap上浪费时间。

<标题>RunTimeType打印
print("type: " + d["tags"].runtimeType.toString());

输出
I/flutter (18762): type: _InternalLinkedHashMap<String, dynamic>

我找到了错误来源。当特定的文档被破坏时,会发生此错误。

对于我来说,我认为数据库是这样的:

tags (array)
|- tag1 (map)
|- user (String)
|- date (Timestamp)
|- tag2 (map)
|- user (String)
|- date (Timestamp)
...

然而,数据库实际上是这样的:

tags (array)
|- user (String)
|- date (Timestamp)

最新更新