cache<T> method

T cache<T>(
  1. T callback(
    1. Ref ref
    ), {
  2. List<Object> keys = const [],
  3. String? name,
  4. bool autoDisposeWhenUnreferenced = false,
})

Caches and stores the value returned by callback.

If keys is passed a value different from the previous value, callback is executed again and the value is updated.

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 you want ScopedValue to be automatically disposed of when it is no longer referenced by any widget, set autoDisposeWhenUnreferenced to true.

callbackで返される値をキャッシュして保存します。

keysが前の値と違う値が渡された場合、再度callbackが実行され値が更新されます。

nameを指定すると別のタイプとして保存されます。keysを変えた場合は以前の状態は破棄されますが、nameを変えた場合は別々の状態として保持されます。

ScopedValueがどのウィジェットにも参照されなくなったときに自動的に破棄させたい場合はautoDisposeWhenUnreferencedtrueにしてください。

Implementation

T cache<T>(
  T Function(Ref ref) callback, {
  List<Object> keys = const [],
  String? name,
  bool autoDisposeWhenUnreferenced = false,
}) {
  return getScopedValue<T, _CacheValue<T>>(
    (ref) => _CacheValue<T>(
      callback: () => callback(ref),
      keys: keys,
      autoDisposeWhenUnreferenced: autoDisposeWhenUnreferenced,
    ),
    listen: false,
    name: name,
  );
}