flutter - 投《地图》>”到“地图>"
问题描述
我想投一个Map<String, dynamic>
to Map<String, List<String>>
。
我在 Flutter 中尝试了以下方法:
Map<String, dynamic> dynamicMap = {
'a': ['1', '2', '3'],
'b': ['1', '2', '3'],
'c': ['1', '2', '3'],
};
Map<String, List<String>> typedMap = dynamicMap;
但是得到以下错误:
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, List<String>>'
然后我尝试了:
Map<String, List<String>> typedMap = dynamicMap.cast<String, List<String>>();
这似乎最初可以工作,但是在尝试使用它时会出现相同的错误,例如print(typedMap)
.
谢谢您的帮助。
编辑
值得一提的是:
Map<String, dynamic> dynamicMap = {
'a': ['1', '2', '3'],
'b': ['1', '2', '3'],
'c': ['1', '2', '3'],
};
Map<String, List<String>> typedMap = dynamicMap.cast<String, List<String>>();
实际上确实有效(为问题中的错误道歉)。
但是,当数据来自 json 时,如下所示:
String rawJson = """{
"a": ["1", "2", "3"],
"b": ["1", "2", "3"],
"c": ["1", "2", "3"]
}""";
final Map<String, dynamic> dynamicMapFromJson = json.decode(rawJson);
Map<String, List<String>> typedMap = dynamicMapFromJson.cast<String, List<String>>();
该代码不再起作用并引发了提到的异常。
下面的答案有助于解决这个问题。
解决方案
地图方法可以帮助您转换您的愿望。
查看以下代码。
我还演示了如何以列表的形式访问 map 的所有值。我希望这对你有用。
Map<String, dynamic> dynamicMap = {
'a': ['1', '2', '3'],
'b': ['1', '2', '3'],
'c': ['1', '2', '3'],
};
Map<String, List<String>> typedMap =
dynamicMap.map((key, value) => MapEntry(key, value));
typedMap.forEach((key, value) {
print(value[0]);
});
推荐阅读
- java - 为多个配置文件设置弹簧配置
- java - 在不同布局中的另一个图像视图上设置一个图像视图
- php - PHP - 使用它们的关系从表中回显数据
- python - 基于 index 和 col 将函数应用于 Dataframe 中的每个单元格
- rubymine - 按下 Enter 时奇怪的 RubyMine 缩进
- node.js - Joi - 已知和未知键的混合
- firebase - 子集合的 Firestore 规则
- api - AXIOS POST 访问控制检查失败:没有 'Access-Control-Allow-Origin' .HTTP 状态代码 405
- galera - Galera Donor 并切换到另一台主机进行插入语句
- svg - SVG 外部对象大小不一致