cancelAll method

void cancelAll()

Clear the queue and cancel all active requests

Implementation

void cancelAll() async {
  final requests = _queue.toList();
  _queue.clear();
  for (var request in requests) {
    request._addEvent(DownloadState.cancelled);
    request.isCancelled = true;
  }
  _activeWorkers.forEach((request, worker) {
    worker.port.send(WorkerCommand.cancel);
    // ensure if wasn't cancelled due to pre-started downloading state
    for (final delay in [500, 1000, 1500]) {
      Future.delayed(Duration(milliseconds: delay)).then((_) {
        if (worker.request == request) {
          worker.port.send(WorkerCommand.cancel);
        }
      });
    }
  });
}