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();
报错截图:

问题原因
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
相关产品推荐
相关产品推荐

