trackFuture method

void trackFuture(
  1. Future<void> f
)

Tracks f so that future will not complete until f has.

Implementation

void trackFuture(Future<void> f) {
  _pending++;

  if (_completer.isCompleted) {
    _completer = Completer<void>();
  }

  unawaited(
    f.then<void>((_) {}, onError: (_) {}).whenComplete(() {
      _pending--;
      if (_pending == 0) {
        _completer.complete();
      }
    }),
  );
}