hamburger-tech-nits

主にプログラミングのNITSな話

Freezedで生成したClassにインスタンスメソッドを追加する

FlutterでFreezedを利用した際に、生成したClassに独自メソッドを追加する方法を調査しました。

pub.dev

@freezed
class Person with _$Person {
  const factory Person(String name, {int? age}) = _Person;

  void method() {
    print('hello world');
  }
}

このコードでは、method()が正しく生成されずにエラーになります。継承(implements)からMixin(with)に記述を更新することで、正しくコード生成されるようになります。

@freezed
abstract class Person implements _$Person { // withではなくimplementsを利用する
  const Person._(); // privateのコンストラクタを追加する
  const factory Person(String name, {int age}) = _Person;

  void method() {
    print('hello world');
  }
}