StateNotifierは、複雑なロジックを持つ状態を管理するためのクラスです。単純な値の変更だけでなく、ロジックを含む状態の更新を行うことができます。
「状態を持つクラスを作って、それを Provider 経由で UI に反映する」 のが stateNotifier
値を増やすロジックとリセットするロジックをクラスにまとめている
class CounterNotifier extends StateNotifier<int> {
CounterNotifier() : super(0);
void increment() => state++;
void reset() => state = 0;
}
final counterProvider =
StateNotifierProvider<CounterNotifier, int>((ref) => CounterNotifier());
StateNotifier<T> を継承するstate プロパティを通して更新ボイラープレートが多い(同じようなコードを繰り返し書かなければならない部分)
→ Provider の型やコンストラクタで初期値など、冗長になりがち
class Counter extends Notifier<int> {
@override
int build() {
return 0; // 初期値
}
void increment() => state++;
void reset() => state = 0;
}
final counterProvider = NotifierProvider<Counter, int>(Counter.new);