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

Flutter使用Freezed生成模型时提示无法为data字段生成toJson代码

报错原因
  • ResourceDataModel作为freezed数据类,缺少with _$ResourceDataModel的mixin绑定,导致json_serializable无法识别该类的序列化规则,无法为上层LanguageResourceResponseModel的data字段生成toJson代码。
  • 你当前使用的freezed 0.15.x版本要求,所有定义了fromJson方法的freezed类都必须混入对应生成的mixin,才能正常对接json序列化能力。
解决步骤
  1. 修改代码,补全ResourceDataModel的mixin声明,完整代码如下:
import 'package:freezed_annotation/freezed_annotation.dart';

part 'language_response_model.freezed.dart';
part 'language_response_model.g.dart';

@freezed
abstract class LanguageResourceResponseModel
    with _$LanguageResourceResponseModel {
  const factory LanguageResourceResponseModel({
    required String id,
    required List<ResourceDataModel> data,
  }) = _LanguageResourceResponseModel;

  factory LanguageResourceResponseModel.fromJson(Map<String, dynamic> json) =>
      _$LanguageResourceResponseModelFromJson(json);
}

@freezed
abstract class ResourceDataModel with _$ResourceDataModel {
  const factory ResourceDataModel({
    required String key,
    required String value,
  }) = _ResourceDataModel;

  factory ResourceDataModel.fromJson(Map<String, dynamic> json) =>
      _$ResourceDataModelFromJson(json);
}
  1. 清理旧生成缓存,重新执行代码生成命令:
    先运行flutter pub run build_runner clean清理历史生成文件,再运行flutter pub run build_runner build --delete-conflicting-outputs即可正常生成代码。

内容的提问来源于stack exchange,提问作者Cyrus the Great

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:07