gpt4 book ai didi

flutter - 如何在 dart 中正确进行类型转换

转载 作者:IT王子 更新时间:2023-10-29 07:11:09 26 4
gpt4 key购买 nike

我正在构建一个使用 Dog API 的 flutter 应用程序,但我无法转换 Map 的类型至 Map<String, List<String>>

我试过使用 map.cast<String,List<String>>()但是当我尝试返回结果时(在指定函数返回 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>>

最佳答案

A CastMap<String, dynamic, String, List<String>>Map<String, List<String>> 的子类型所以这不是问题。它类似于您指定返回类型 num 的情况。你返回的具体值是 int .

您将遇到的问题是,当您从 map 中读取一个值时,您将得到一个 List<dynamic>。而不是 List<String> .您还需要更改内部值的运行时类型。

var map = (linkedHashMap['message'] as Map).map((key, value) => MapEntry<String, List<String>>(key, List.from(value));

关于flutter - 如何在 dart 中正确进行类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56741175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com