bulkDownloader function

Stream<TileProgress> bulkDownloader({
  1. required List<Coords<num>> tiles,
  2. required FMTCTileProvider provider,
  3. required TileLayerOptions options,
  4. required Client client,
  5. required dynamic errorHandler(
    1. Object?
    )?,
  6. required int parallelThreads,
  7. required bool preventRedownload,
  8. required Uint8List? seaTileBytes,
  9. required Queue queue,
  10. required StreamController<TileProgress> streamController,
  11. required int downloadID,
  12. required InternalProgressTimingManagement progressManagement,
})

Implementation

Stream<TileProgress> bulkDownloader({
  required List<Coords<num>> tiles,
  required FMTCTileProvider provider,
  required TileLayerOptions options,
  required http.Client client,
  required Function(Object?)? errorHandler,
  required int parallelThreads,
  required bool preventRedownload,
  required Uint8List? seaTileBytes,
  required Queue queue,
  required StreamController<TileProgress> streamController,
  required int downloadID,
  required InternalProgressTimingManagement progressManagement,
}) {
  for (final Coords<num> coord in tiles) {
    queue
        .add(
      () => _getAndSaveTile(
        provider: provider,
        coord: coord,
        options: options,
        client: client,
        errorHandler: errorHandler,
        preventRedownload: preventRedownload,
        seaTileBytes: seaTileBytes,
        downloadID: downloadID,
        progressManagement: progressManagement,
      ),
    )
        .then(
      (e) {
        if (!streamController.isClosed) streamController.add(e);
      },
    );
  }

  return streamController.stream;
}