[読書会]freezed 2.5.7 翻訳及び補足(How to use / Configurations)

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 つの特定のクラスに対してのみカスタマイズしたい場合は、別のアノテーションを使用してカスタマイズできます。

Dart
@Freezed()
class Person with _$Person {
  factory Person(String name, int age) = _Person;
}

これにより、さまざまなパラメーターを @Freezed に渡して出力を変更できるようになります。

Dart
@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 の隣に配置する必要があるオプションの構成ファイルです。

Dart
my_project_folder/
  pubspec.yaml
  build.yaml
  lib/

そこでは、次のように記述することで、@Freezed (上記を参照) にあるオプションと同じオプションを変更できます。

Dart
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

(続きの記事はこちら↓)

コメントを残す