watch<T extends Listenable?> method
You can monitor it by passing a callback
that returns a ChangeNotifier.
When ChangeNotifier.notifyListeners is executed, the update is notified and the associated widget is redrawn.
If keys
is different from the previous value, callback
is executed again and the new ChangeNotifier is saved.
If name
is specified, it is saved as a separate type. If keys
is changed, the previous state is discarded, but if name
is changed, it is kept as a separate state.
If disposal
is set to false
, when ScopedValue is destroyed, the content T
is not destroyed.
If you want ScopedValue to be automatically disposed of when it is no longer referenced by any widget, set autoDisposeWhenUnreferenced
to true
.
ChangeNotifierを返すcallback
を渡すとそれを監視することができます。
ChangeNotifier.notifyListenersが実行されると更新が通知され、関連するウィジェットが再描画されます。
keys
が前の値と違う場合再度callback
が実行され、新しいChangeNotifierが保存されます。
name
を指定すると別のタイプとして保存されます。keys
を変えた場合は以前の状態は破棄されますが、name
を変えた場合は別々の状態として保持されます。
disposal
をfalse
にするとScopedValue破棄時、中身のT
は破棄されません。
ScopedValueがどのウィジェットにも参照されなくなったときに自動的に破棄させたい場合はautoDisposeWhenUnreferenced
をtrue
にしてください。
Implementation
T watch<T extends Listenable?>(
T Function(Ref ref) callback, {
List<Object> keys = const [],
String? name,
bool disposal = true,
bool autoDisposeWhenUnreferenced = false,
}) {
return getScopedValue<T, _WatchValue<T>>(
(ref) => _WatchValue<T>(
callback: () => callback(ref),
keys: keys,
disposal: disposal,
autoDisposeWhenUnreferenced: autoDisposeWhenUnreferenced,
),
listen: true,
name: name,
);
}