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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:05:26