flutter - 如何在 dart 中正确进行类型转换
问题描述
我正在构建一个使用 Dog API 的颤振应用程序,但我无法将 a 的类型转换Map
为Map<String, List<String>>
我尝试使用map.cast<String,List<String>>()
但在尝试返回结果时没有产生错误(在指定函数返回 a 之后Map<<String,List<String>>>
),当我运行时print(map.runtimeType);
输出是CastMap<String, dynamic, String, List<String>>
而不是Map<<String,List<String>>>
Future<Map<String,List<String>>> getbreeds() async{
var json=await http.get('https://dog.ceo/api/breeds/list/all');
var linkedHashMap =Map.from(jsonDecode(json.body)) ;
var map=linkedHashMap['message'].cast<String,List<String>>();
print(map.runtimeType);
return map;
}
我希望的输出是print(map.runtimeType);
,Map<<String,List<String>>>
但相反,我得到CastMap<String, dynamic, String, List<String>>
解决方案
ACastMap<String, dynamic, String, List<String>>
是的一个子类型,Map<String, List<String>>
所以这不是问题。这类似于您指定返回类型的情况,num
并且您返回的具体值是int
.
您要遇到的问题是,当您从地图中读取值时,您将得到 aList<dynamic>
而不是 a List<String>
。您还需要更改内部值的运行时类型。
var map = (linkedHashMap['message'] as Map).map((key, value) => MapEntry<String, List<String>>(key, List.from(value));
推荐阅读
- c# - EF6 - 使用复制的数据库
- android - 如何在安卓中使用绝对路径删除文件
- python - 从熊猫中的字符串中提取带小数的数字
- talend - 如何从 Talend 中的 Excel 文件中读取不同行的数据值?
- google-apps-script - Apps 脚本将数据从 Google 电子表格复制到特定工作表和单元格中的 Excel 文件
- github - 版本控制的 Github 状态检查
- pandas - 为列对创建稀疏指标矩阵
- java - 停止(中断)正在运行阻塞操作的线程?
- qt - Qt 设计器中的 QPushButton
- css - 无法使 React Native 背景全屏