Flutter/Dart API调用返回类型不匹配错误解决方案咨询
解决Dart/Flutter API对接中的类型不匹配错误
问题根源
你遇到的错误是方法返回类型声明与实际返回值类型不兼容:
getHeroes方法声明的返回类型是Future<List<String>?>,表示要返回字符串列表的Future- 但
heroesFromJson(json)返回的是List<Heroes>类型的对象列表,两者类型完全不匹配
解决步骤
修正方法返回类型
将getHeroes的返回类型改为Future<List<Heroes>?>,匹配实际要返回的Heroes对象列表类型。补充非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
相关产品推荐
相关产品推荐

