- 基本的にhooksを扱う場合以外状態を持たない
- 画面やウィジェットの出し分けが必要な場合はStateNotifierの状態として保持
- 基本的にStateNotifierProvider.autoDisposeとして利用し、StateNotifierのライフサイクルを各ページのライフサイクルと一致させる
- 状態はStateクラスに持る
- 基本的に状態を持たない
- ビジネスロジックを記述する
- APIから取得した状態の保持はRepositoryで行う
- Provider.autoDisposeを基本的に利用し、notifier(presentation)側とライフサイクルを一致させる
- ユースケースや要求に応じて状態を持つ場合がある
- dataSourceからの取得値を状態(cache)として変数で保持する。そのため、autoDisposeはしない。
- コンストラクタの永続化はProviderで定義することで実現する
- 状態を持たない
- 通信により取得した値のキャッシュはrepositoryで行う
カテゴリ | 使用例 | 状態の保存場所 |
---|---|---|
画面のコンポーネントが持つ状態 | 検索のソート条件 | stateで保持。前回の条件を保持するといった場合はRepositoryなどでキャッシュとして保持 |
画面全体が持つ状態 | ユーザー情報全体 | Repository層のキャッシュ |
複数の画面にまたがる状態 | 実行中のタスクID | GoRouterのqueryParamsで継承 |
アプリ全体で持つ状態 | 初回起動フラグ | SharedPreferenceによる保持 |