whenDownloadComplete method

Future<DownloadStatus> whenDownloadComplete({
  1. Duration timeout = const Duration(hours: 2),
})

Implementation

Future<DownloadStatus> whenDownloadComplete(
    {Duration timeout = const Duration(hours: 2)}) async {
  var completer = Completer<DownloadStatus>();

  if (status.value.isCompleted) {
    completer.complete(status.value);
  }

  // ignore: prefer_typing_uninitialized_variables
  var listener;
  listener = () {
    if (status.value.isCompleted) {
      completer.complete(status.value);
      status.removeListener(listener);
    }
  };

  status.addListener(listener);

  return completer.future.timeout(timeout);
}