freezedは、データクラス、ユニオン(合併型)、およびクローニング用のコードジェネレーターです。
これはDartプログラミング言語におけるモデル定義を簡単にするために設計されています。
Note(注釈)
現在、Freezedのマクロを使用した初期プレビュー版が利用可能です。
詳細については、GitHubのリンク https://github.com/rrousselGit/freezed/tree/macros を参照してください。
本ブログの(上記https://pub.dev/packages/freezedの)翻訳および解説の目次頁(構成上のトップページ)は次のURLになります。
また前回記事は、こちらになります。
本頁は、上記(目次)のうちの、「How to use / Configurations」の章の翻訳および解説頁になります。
2.6 Configurations
Freezed には、生成されたコードをカスタマイズするためのさまざまなオプションが用意されています。
例えば、when メソッドの生成を無効にすることができます。 そのためには、次の 2 つの可能性があります。
(1) Changing the behavior for a specific model
特定のモデルの動作を変更する
生成されたコードを 1 つの特定のクラスに対してのみカスタマイズしたい場合は、別のアノテーションを使用してカスタマイズできます。
@Freezed()
class Person with _$Person {
factory Person(String name, int age) = _Person;
}
これにより、さまざまなパラメーターを @Freezed に渡して出力を変更できるようになります。
@Freezed(
// Disable the generation of copyWith/==
copyWith: false,
equal: false,
)
class Person with _$Person {...}
すべての可能性を確認するには、@Freezed のドキュメントを参照してください: https://pub.dev/documentation/freezed_annotation/latest/freezed_annotation/Freezed-class.html
(2) Changing the behavior for the entire project
プロジェクト全体の動作を変更する
変更を 1 つのクラスに適用するのではなく、すべてのフリーズ モデルに同時に適用することもできます。
これを行うには、build.yaml というファイルをカスタマイズします。 このファイルは、pubspec.yaml の隣に配置する必要があるオプションの構成ファイルです。
my_project_folder/
pubspec.yaml
build.yaml
lib/
そこでは、次のように記述することで、@Freezed (上記を参照) にあるオプションと同じオプションを変更できます。
targets:
$default:
builders:
freezed:
options:
# Tells Freezed not to format .freezed.dart files.
# This can significantly speed up code-generation.
format: false
# Disable the generation of copyWith/== for the entire project
copy_with: false
equal: false
# `when` and `map` can be enabled/disabled entirely by setting them to `true`/`false`
map: false
# We can also enable/disable specific variants of `when`/`map` by setting them to `true`/`false`:
when:
when: true
maybe_when: true
when_or_null: false
(続きの記事はこちら↓)