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

Flutter调用API报错:期望Iterable<dynamic>类型却得到Null

解决Flutter API数据获取中productData为Null的问题

问题原因

你调用的JSON Bin v3接口返回的JSON结构里,products字段并非直接在顶层,而是嵌套在record字段内部。直接通过decodedData["products"]取值自然会得到Null,进而触发后续Iterable转换的错误。

修复后的代码

url = "https://api.jsonbin.io/v3/b/6405e540c0e7653a05834f86";
loadData() async{
  // 移除不必要的延迟等待
  final response = await http.get(Uri.parse(url));
  
  // 先判断响应状态码是否正常
  if(response.statusCode == 200){
    final catalogJson = response.body;
    final decodedData = jsonDecode(catalogJson);
    // 先获取record层级,再取products字段
    var productData = decodedData["record"]["products"];

    // 增加空值判断,避免Null传递到后续逻辑
    if(productData != null){
      CatalogModel.items = List.from(productData).map<Item>((item) => Item.fromMap(item)).toList();
      setState(() {});
    }
  }
}

额外优化点

  • 删除无意义的Future.delayed,它只会延长数据加载时间
  • 增加HTTP状态码校验,确保接口请求成功再解析数据
  • 可以添加try-catch包裹JSON解析和数据转换逻辑,处理格式异常或其他意外情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:52:42