fetch method

Future<void> fetch(
  1. AsyncSource<T> source
)

Implementation

Future<void> fetch(AsyncSource<T> source) async {
  _sourceDisposer?.call();
  _sourceDisposer = null;

  void emit(AsyncState<T> state) {
    if (!isDisposed) set(state);
  }

  final future = source.subscribe(emit);
  _sourceDisposer = source.dispose;
  final currentDisposer = source.dispose;

  try {
    await future;
  } finally {
    if (_sourceDisposer == currentDisposer) {
      _sourceDisposer = null;
      currentDisposer();
    }
  }
}