overrideWithValue method

Override overrideWithValue(
  1. AsyncValue<T> value
)
inherited

Implementation

Override overrideWithValue(AsyncValue<T> value) {
  return ProviderOverride(
    ValueProvider<Future<T>, AsyncValue<T>>((ref) {
      final completer = Completer<T>()
        // Catch the error so that it isn't pushed to the zone. This is safe since FutureProvider catches errors for us
        // ignore: avoid_types_on_closure_parameters
        ..future.then((_) {}, onError: (Object _) {});
      ref.onChange = (newValue) {
        if (completer.isCompleted) {
          ref.markMustRecomputeState();
        } else {
          newValue.when(
            data: completer.complete,
            loading: () {},
            error: completer.completeError,
          );
        }
      };
      ref.onChange!(value);
      return completer.future;
    }, value),
    this,
  );
}