downloadMultiple method

Future<List<DownloadResult>> downloadMultiple({
  1. required List<String> urls,
  2. String? saveDirectory,
  3. Map<String, dynamic>? headers,
  4. dynamic onProgress(
    1. String url,
    2. int received,
    3. int total
    )?,
})

Download multiple files in parallel

Implementation

Future<List<DownloadResult>> downloadMultiple({
  required List<String> urls,
  String? saveDirectory,
  Map<String, dynamic>? headers,
  Function(String url, int received, int total)? onProgress,
}) async {
  _logger.log('📥 Starting ${urls.length} downloads in parallel...');

  final results = await Future.wait(
    urls.map((url) => downloadFile(
      url: url,
      savePath: saveDirectory,
      headers: headers,
      onProgress: onProgress != null
          ? (received, total) => onProgress(url, received, total)
          : null,
    )),
  );

  final successCount = results.where((r) => r.success).length;
  _logger.log(
    '✅ Completed $successCount/${urls.length} downloads successfully',
  );

  return results;
}