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

Flutter报错:'Null'类型不是'List<ProductModel>'的子类型,API请求问题

解决Flutter中type 'Null' is not a subtype of type 'List'错误

错误日志:
I/flutter ( 4348): type 'Null' is not a subtype of type 'List'

相关代码:

galleries = json['galleries']
        .map<GalleryModel>((gallery) => GalleryModel.fromJson(gallery))
        .toList();

报错截图:
type NULL相关截图
截图2

问题原因

API返回的json['galleries']字段为null,但你直接对它调用.map方法,同时试图把null赋值给List<GalleryModel>类型的galleries变量,类型不匹配触发了这个错误。

解决办法

方法1:给字段设置默认空列表(最简洁)

直接用空列表替代null值,修改代码如下:

galleries = (json['galleries'] as List?)
        ?.map<GalleryModel>((gallery) => GalleryModel.fromJson(gallery))
        .toList() ?? [];

先把字段转为可空List类型,用?.安全调用map方法,最后如果是null就返回空列表。

方法2:显式做null检查

先判断字段是否为null,再处理转换逻辑:

final galleriesJson = json['galleries'];
if (galleriesJson != null) {
  galleries = (galleriesJson as List)
      .map<GalleryModel>((gallery) => GalleryModel.fromJson(gallery))
      .toList();
} else {
  galleries = []; // 也可以根据业务需求把galleries声明为List<GalleryModel>?,这里赋值null
}

方法3:用序列化工具规避手动处理(推荐)

使用json_serializable这类序列化包,它会自动处理可空字段的转换,只需在你的GalleryModel和ProductModel类中正确标记可空属性,就能避免手动写转换代码时的null问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:55:14