disposable<T> method

T disposable<T>(
  1. T init(),
  2. void dispose(
    1. T
    ), [
  3. List<Object?> dependencies = const []
])

A shortcut over memo and effect to handle disposable objects. Specifically, this:

  1. Creates some value via init
  2. Automatically recreates that value whenever dependencies change
  3. Automatically dispose all outdated values via dispose

Not specify dependencies will only create the value once.

Implementation

T disposable<T>(
  T Function() init,
  void Function(T) dispose, [
  List<Object?> dependencies = const [],
]) {
  final value = use.memo(init, dependencies);
  use.effect(() => () => dispose(value), [value]);
  return value;
}