Flutter接口请求报_TypeError类型不匹配无法渲染ListView如何解决
问题根因
你声明的getCurrencies方法返回值类型为Future<List>,但CoinMarketCap的接口返回的JSON根结构是Map对象,你需要的货币列表存储在根Map的data字段中,直接返回json.decode(response.body)就会触发类型不匹配错误。
修改后的代码
Future<List> getCurrencies() async { String cryptoUrl = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?CMC_PRO_API_KEY=my-key"; http.Response response = await http.get(Uri.parse(cryptoUrl)); // 先把返回内容解析为Map类型,再取出data字段的列表返回 Map<String, dynamic> responseData = json.decode(response.body); return responseData['data']; }
额外优化建议
如果要进一步规范类型,避免后续使用时的隐式类型转换风险,可以把返回值定义为明确的泛型类型:
Future<List<Map<String, dynamic>>> getCurrencies() async { String cryptoUrl = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?CMC_PRO_API_KEY=my-key"; final response = await http.get(Uri.parse(cryptoUrl)); final Map<String, dynamic> responseData = json.decode(response.body); return List<Map<String, dynamic>>.from(responseData['data']); }
内容的提问来源于stack exchange,提问作者Rudransh Singh Mahra
相关产品推荐
相关产品推荐

