次の SomeIntValue
は別の OtherIntValue
の状態に依存しているため、OtherIntValue
の状態が変わるたびに SomeIntValue
のStateの再ビルドが行われます。
some_int_value.dart
@riverpod
class SomeIntValue extends _$SomeIntValue {
@override
int build() {
final otherIntValue = ref.watch(otherIntValueProvider);
// ビルド処理
...
}
}
この再ビルド時に SomeIntValue
の現在のStateをもとに新しい状態を作りたい場合は stateOrNull を使うと良さそうです。stateOrNull
は初回のビルド時には null
、再ビルド時は現在の state
が得られます。
some_int_value.dart
@riverpod
class SomeIntValue extends _$SomeIntValue {
@override
int build() {
final otherIntValue = ref.watch(otherIntValueProvider);
return (stateOrNull ?? 0) + otherIntValue;
}
}