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

使用Freezed包生成归档文件时出现Stack Overflow错误如何解决?

Freezed配合Modular、Injectable空安全迁移后生成时栈溢出解决方案

[SEVERE] freezed:freezed on [my archives directory].dart:
Stack Overflow

该报错在同时使用@freezed和@Injectable()注解的场景下出现,空安全迁移前运行正常,属于依赖兼容或注解使用不规范导致的生成器递归问题,可按以下步骤排查解决:

  • 第一步:对齐所有相关依赖的空安全兼容版本
    确保以下依赖全部升级到支持空安全的最新稳定版,避免版本交叉不兼容触发生成器逻辑冲突:
    • freezed、freezed_annotation >= 2.0.0
    • injectable、injectable_generator >= 1.5.0
    • flutter_modular、modular_codegen >= 5.0.0
    • build_runner >= 2.0.0
  • 第二步:修正@freezed和@Injectable()的注解使用规范
    空安全版本的Freezed要求可注入类必须显式声明私有构造函数,且注解顺序需要将@Injectable()放在@freezed上方,正确写法示例:
@Injectable()
@freezed
class ExampleModel with _$ExampleModel {
  // 必须添加私有构造,供Injectable识别可用构造器
  const ExampleModel._();

  const factory ExampleModel({
    required String id,
    required String name,
  }) = _ExampleModel;
}
  • 第三步:排查循环注入/循环引用问题
    检查所有添加了双注解的类,是否存在A依赖B、B依赖A的循环引用场景,空安全后生成器的类型校验逻辑会在这类场景下进入无限递归,拆分循环依赖即可解决。
  • 第四步:清理缓存后重新执行生成命令
    执行以下命令清除历史缓存产物后重新生成:
flutter clean
rm pubspec.lock
flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs --low-resources-mode

内容的提问来源于stack exchange,提问作者Alencar Moreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:12:03