Flutter中‘type 'null' is not a subtype of type 'map string dynamic'’错误求助
问题解决方法
方案1:允许product字段为null
修改Store类,将product设为可空类型,并在解析时判断字段是否为null:
class Store { Store({ this.product, }); Product? product; factory Store.fromJson(Map<String, dynamic> json) => Store( product: json["product"] != null ? Product.fromJson(json["product"]) : null, ); Map<String, dynamic> toJson() => { "product": product?.toJson(), }; }
方案2:返回默认Product实例(避免null)
如果业务逻辑不允许product为null,可在解析时为null场景生成默认实例:
先给Product添加空实例工厂方法:
class Product { // ... 原有代码 factory Product.empty() => Product( description1: "", description2: "", description3: "", ); }
再修改Store的解析逻辑:
class Store { Store({ required this.product, }); Product product; factory Store.fromJson(Map<String, dynamic> json) => Store( product: json["product"] != null ? Product.fromJson(json["product"]) : Product.empty(), ); // ... 原有toJson代码 }
问题根源
报错的核心原因是:Product.fromJson要求传入Map<String, dynamic>类型参数,但当JSON中product为null时,json["product"]是null值,无法匹配Map<String, dynamic>类型,触发类型转换异常。
内容的提问来源于stack exchange,提问作者Rodrigues silva
相关产品推荐
相关产品推荐

