$cache<T> function

T $cache<T>(
  1. T compute(),
  2. bool reusable
)

Implementation

T $cache<T>(T compute(), bool reusable) {
  final cached = $value<T?>(() => null);
  final isFirstRun = $value(() => true);

  final needCompute = (!reusable && !isFirstRun.value) || isFirstRun.value;
  $fork(needCompute);
  if (needCompute) {
    cached.value = compute();
  }
  $merge();

  isFirstRun.value = false;
  return cached.value as T;
}