You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 15:24:04