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

Flutter安卓天气应用调用API时报错String无法赋值给Uri类型如何解决

报错原因与修复方案

报错根因

你使用的http: ^0.13.3版本中,http.get等请求方法的入参不再支持直接传入字符串格式的URL,必须传入Uri类型的参数,这就是你遇到类型不匹配报错的原因。
另外你的代码还存在一个隐藏的解析错误:该天气接口返回的current字段是对象类型,不是数组,你代码中加的[0]下标会在接口请求成功后抛出新的异常。

具体修改步骤

  • 将字符串格式的URL通过Uri.parse()方法转换为Uri类型传入http.get
  • 删除results['current']后多余的[0]下标

修改后的核心代码

修改getWeather方法即可:

Future getWeather () async {
  // 字符串URL转Uri类型
  http.Response response = await http.get(Uri.parse("http://api.weatherapi.com/v1/current.json?key=e5bd00e528e346ff8a840254213009&q=Chatham Ontario&aqi=no"));
  var results = jsonDecode(response.body);
  setState((){
    this.temp = results['current']['temp_c'];
    // 移除多余的[0]
    this.description = results['current']['last_updated'];
    // 移除多余的[0]
    this.currently = results['current']['condition']['text'];
    this.humidity = results['current']['humidity'];
    this.windSpeed = results['current']['wind_kph'];
  });
}

修改完成后重新运行项目即可正常请求接口、渲染天气数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:48:02