rememberAsyncValue<T> method

AsyncValue<T> rememberAsyncValue<T>(
  1. Future<T> value(), {
  2. Object? key,
  3. bool toLocal = false,
})

Implementation

AsyncValue<T> rememberAsyncValue<T>(Future<T> Function() value,
    {Object? key, bool toLocal = false}) {
  ValueNotifier<AsyncValue<T>> init() {
    final result = mutableStateWith<AsyncValue<T>>(AsyncValue<T>.waiting());
    final future = value();
    future
        .bindCancellable(mountable)
        .then((v) => result.value = AsyncValue.value(v))
        .onError<Object>((error, stackTrace) => result.value =
            AsyncValue.error(error: error, stackTrace: stackTrace))
        .ignore();
    return result;
  }

  final vk = XKey<ValueNotifier<T>>(key);

  ValueNotifier<AsyncValue<T>> r;
  if (toLocal) {
    r = remember2Local(init, key: vk);
  } else {
    r = remember(init, key: vk);
  }

  addToListenableSingleMarkNeedsBuildListener(r);
  return r.value;
}