我正在尝试遍历以下数据结构:{String: [{String, List<SomethingResponse>}]}
其中SomethingResponse = {String: dynamic})
。我创建了这个模型:
class SomethingsResponse {
final Map<String, List<SomethingResponse>> SomethingsResponse;
SomethingsResponse({this.SomethingsResponse});
factory SomethingsResponse.fromJson(data) {
return SomethingsResponse(SomethingsResponse: data.map<String, List<SomethingResponse>>((String key, dynamic value) {
final dataFromCategory = List<SomethingResponse>.from(value.map((x) => SomethingResponse.fromJson(x)));
return MapEntry(key, dataFromCategory);
}));
}
}
当我尝试获取像data.somethingsResponse.toList()
这样的键时,出现错误消息:Class '_InternalLinkedHashMap<String, List>' has no instance method 'toList'.
我无法对其进行迭代或从中获取任何类型的数据。我在做什么错,我该如何解决?我感觉问题出在这行
return MapEntry(key, dataFromCategory);
,但是我尝试了几种不同的方式来创建Map
,但是没有一种有效。
最佳答案
如果您查阅 Map
的文档,您会发现它不是从Iterable
派生的,因此不能直接迭代。我认为这是因为要迭代的内容不明显:键,值或键值对?
如果要遍历键,请使用 Map.keys
。 (在您的情况下:data.somethingsResponse.keys.toList()
)
如果要迭代值,请使用 Map.values
。
如果要遍历键值对(即MapEntry
对象),请使用 Map.entries
。
关于flutter - 遍历_InternalLinkedHashMap不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63222455/