https://github.com/rrousselGit/freezed

https://www.developer.school/tutorials/how-to-use-freezed-with-flutter

https://runble1.com/flutter-freezed-tutorial/

Freezed 是一个不可变类的代码生成器, 用于数据类/联合/模式匹配/克隆代码生成器。不可变类的代码生成具有简单的语法/API,而不会影响功能。

Dart/Flutter 中定义模型(model)的时候, 经常要附加以下的工作:

  • 定义一个构造函数+属性
  • 覆盖 toString、运算符 ==、hashCode
  • 实现一个 copyWith 方法来克隆对象
  • 处理反序列化

除此之外,Dart 还缺少联合类型模式匹配等功能。实现所有这些可能需要数百行代码,这很容易出错并且模型的可读性显着。

Freezed 尝试通过实现以上的大部分内容来解决这个问题,让开发者可以专注于模型的定义。

不可变类(immutable class)