この記事の内容は古くなっています。更新した以下の記事を確認してください。
Freezed
で生成するクラスに、自動生成以外のメソッドを追加する方法について
公式にもちゃんと記載がありました。
@freezed abstract class Person with _$Person { const factory Person(String name, {int age}) = _Person; void method() { print('hello world'); } }
このコードでは、method()
が正しく生成されずにエラーになります。
This is because by default, Freezed has no way of "extending" the class and instead "implements" it.
(訳)これは、デフォルトではFreezedにはクラスを「拡張」する方法がなく、代わりにクラスを「実装」しているからです。
なので、abstract classにmixinではなくimplementsするようにしてprivate constructorを追加してあげることで独自メソッドを追加できるようになります
@freezed abstract class Person implements _$Person { // uses implements instead of with const Person._(); // Added constructor const factory Person(String name, {int age}) = _Person; void method() { print('hello world'); } }