Open4

Freezedを学ぶ

やまやま

Freezedのイミュータブルクラスでバリデーションを行うには,コンストラクタにバリデーションを追加すればよい。
しかしながら,自動生成されるcopyWithメソッド内でバリデーションを実装したコンストラクタが呼ばれないという問題点がある[1]

対処法には@freezed@Freezed(copyWith: false)に置き換えて,copyWithを自分で実装するという方法がある。
https://qiita.com/MLLB/items/5350709fd7d794568754

脚注
  1. その値オブジェクトが単に一度だけ値をバリデーションしてラップするためだけのものなら良いが,例えば四則演算のように新たな別の値を返す必要がある場合には問題となる。 ↩︎

やまやま

Freezedでネストしたクラスに対応する

https://qiita.com/kilalabu/items/6bc82e627d6ca703bb28

ListやMapに対しても、専用コンバーターを用意する必要はない!?
https://qiita.com/kilalabu/items/6bc82e627d6ca703bb28

const factoryの上に@JsonSerializableをおいたら、The annotation 'JsonSerializable' can only be used on classes.と警告が表示されるが、これはissueとして認識されており、これに従う必要はないとのことである。
https://stackoverflow.com/questions/71515619/generated-class-from-freezed-creates-duplicate-fromjson-method