2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FlutterのFreezedに慣れる。

Last updated at Posted at 2022-02-28

freezedを使う理由は、ネストを避けて状態管理に安全性を求める為です。要はコードが整理整頓しやすくなります。
Android Studioのプラグインを使用した方が良いのでしょうが、VS codeでのFlutter開発が慣れているので、変更の都度下記コマンドでGeneratorを走らせながらfreezedを使って参ります。

flutter clean
// エラーが他にある場合、そのファイル群を削除するのに使用

flutter pub get
// ライブラリが更新されていない場合に必要。

flutter packages pub run build_runner build --delete-conflicting-outputs
// freezedのエラー処理とXXXX.freezed.dartの生成。
dev_dependencies:
  build_runner: ^latest

バージョン管理にかかせないfvmというパーケージ管理ライブラリを、プロジェクトのルート直下にMakefileを置いてそこに上記の処理と合わせて

.PHONY: build

build:
	fvm flutter pub run build_runner build --delete-conflicting-outputs

と書くだけで、make buildとターミナルで打つだけで実行することができます。もし、開発のペースにゆとりがあれば、このようにpub getも書き加えて!

.PHONY: build

build:
    fvm flutter pub get
	fvm flutter pub run build_runner build --delete-conflicting-outputs

行を増やして簡略化しましょう。

Freezedはプロパティを宣言せず、ファクトリコンストラクタを用いてクラスを定義します。

 @freezed
 class Dog with _$Dog {
   factory Dog({ String? name , int? age }) = _Dog;
 }
// 名前(String)と年齢(int)の2つのプロパティを持つクラス

こちらを使用するには、

 var dog = Dog(name: 'KenKen', age: 8);
 print(dog.name); -> // KenKen
 print(dog.age); -> // 8

このように書けば使用できます。また、パラメータの型がサポートされているので

 @freezed
 class Dog with _$Dog {
   const factory Dog( String name , int age, {String? dog_breed }) = _Dog;
 }
 
 Dog('KenKen', 8, dog_breed: 'Shiba')
// ケンケンという8歳の柴犬がパラメータ。

このようにも書けます。dartのデータ型の多くはイミュータブル(状態を変更することができないオブジェクト)でfreezedはそのデータ型を自動生成して扱いやすくしてくれます。Dogのクラスのnameプロパティに名前無しデフォルト値を与える場合は次のように書きます。

 @freezed
 abstract class Dog with _$Dog {
   const factory Dog({
     @Default('名前無し') String name,
     int age,
     bool young,
   }) = _Dog;
 }

 final dog = Dog(age: 8, young: false);
 print(dog.name); // 名前無し

と他にも色々な使い方があるのでこちらの記事に後から追加していきたいと思います。

追加の記事へ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?