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

Flutter/Dart API调用返回类型不匹配错误解决方案咨询

解决Dart/Flutter API对接中的类型不匹配错误

问题根源

你遇到的错误是方法返回类型声明与实际返回值类型不兼容:

  • getHeroes方法声明的返回类型是Future<List<String>?>,表示要返回字符串列表的Future
  • 但heroesFromJson(json)返回的是List<Heroes>类型的对象列表,两者类型完全不匹配

解决步骤

  1. 修正方法返回类型
    将getHeroes的返回类型改为Future<List<Heroes>?>,匹配实际要返回的Heroes对象列表类型。

  2. 补充非200状态码的返回逻辑
    当前代码仅处理了响应状态码200的情况,其他分支无返回值会触发编译错误,需补充默认返回逻辑(比如返回null)。

修改后的services代码

class DotaServices {
  Future<List<Heroes>?> getHeroes() async {
    var client = http.Client();
    var url = Uri.parse('https://api.opendota.com/api/heroes');
    var response = await client.get(url);
    if (response.statusCode == 200) {
      var json = response.body;
      return heroesFromJson(json);
    }
    // 处理非200状态码,返回null
    return null;
  }
}

额外提示

  • 若业务需要,可将返回null的逻辑替换为抛出异常:throw Exception('加载英雄数据失败'),调用方通过try-catch捕获即可。
  • 按照Dart命名规范,单个对象的类名建议用大驼峰单数形式,Heroes可改为Hero,对应列表类型改为List<Hero>,语义更清晰。

内容的提问来源于stack exchange,提问作者Vaansuit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:36:21