🧊

[Flutter / Freezed] Freezedでimmutableなクラスを生成

2022/09/18に公開

はじめに

Modelクラスはimmutableである方が好ましいということはRiverpod(StateNotifierProvider)の記事に記しましたが、
一からModelクラスを書くよりは、Freezedパッケージを使用して生成した方が楽且つ安全性の担保ができます。

今回は別記事で作成したTodoアプリのModelクラスを例に手順をまとめようと思います。
https://zenn.dev/taku_zenn/articles/e416eab158ae0f

手順

  1. パッケージのインストール
terminal
$ dart pub add freezed
$ dart pub add build_runner
pubspec.yaml
dependencies:
  flutter:
    sdk: flutter

  build_runner: ^2.2.0 # 記事作成時のバージョン
  freezed: ^2.0.4 # 記事作成時のバージョン
  1. Modelの定義
    定型分的に書いていきますが、デフォルト値を与える書き方もあります。
todo.dart
import 'package:freezed_annotation/freezed_annotation.dart';
part 'todo.freezed.dart';


class Todo with _$Todo {
  const factory Todo({
  required String id,
  // @Default('') String id; デフォルト値を与える場合の書き方
  required String description,
}) = _Todo;
}
  1. コマンド実行
terminal
$ flutter pub run build_runner build
  1. 確認
    「todo.dart」と同じディレクトリに「todo.freezed.dart」が生成されていることを確認。
    これでimmutableなTodoクラスが出来上がりです。

おわりに

Modelクラスにメソッドを追加したりするにはもう一手間必要だったり。

参考記事

https://www.memory-lovers.blog/entry/2022/04/18/111000

脚注
  1. 脚注の内容その1
    https://pub.dev/packages/freezed/install ↩︎

  2. 脚注の内容その1
    https://pub.dev/packages/build_runner/install ↩︎

Discussion