overrideWithValue method

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

Implementation

Override overrideWithValue(AsyncValue<T> value) {
  return ProviderOverride(
    ValueProvider<Stream<T>, AsyncValue<T>>((ref) {
      AsyncValue<T>? lastValue;
      final controller = StreamController<T>();
      ref.onDispose(controller.close);

      ref.onChange = (newValue) {
        newValue.when(
          data: controller.add,
          loading: () {
            if (lastValue != null && lastValue is! AsyncLoading) {
              ref.markMustRecomputeState();
            }
          },
          error: controller.addError,
        );
        lastValue = newValue;
      };

      ref.onChange!(value);

      return controller.stream.asBroadcastStream();
    }, value),
    this,
  );
}