flutter_multiple_downloader
A Flutter package for multiple concurrent downloads with chunk-based downloading support. This package supports null safety and is compatible with Flutter 3.10+.
Features
- Multiple Concurrent Downloads: Download files using multiple concurrent connections
- Chunk-based Downloading: Split large files into chunks for efficient downloading
- Progress Tracking: Monitor download progress with percentage callbacks
- Stream Support: Use streams for real-time download progress updates
- Null Safety: Fully supports Dart null safety
- Error Handling: Comprehensive error handling for network issues
Installation
Add this to your package's pubspec.yaml file:
dependencies:
flutter_multiple_downloader: ^1.0.0
Usage
Basic Download
import 'package:flutter_multiple_downloader/flutter_multiple_downloder.dart';
// Create a downloader instance
final downloader = Downloader(
'https://example.com/large-file.zip',
chunkSize: 1024 * 1024, // 1MB chunks
p: 3, // 3 concurrent connections
);
// Download with progress callback
await downloader.download(
onPercentage: (done, total) {
print('Downloaded: $done/$total chunks');
},
);
// Get the downloaded data
if (downloader.noError) {
final data = downloader.state.asList();
print('Downloaded ${data.length} bytes');
}
// Clean up
downloader.markFinished();
Stream-based Download
// Get download stream
final stream = await downloader.downStream();
// Listen to progress updates
await for (final state in stream) {
print('Progress: ${state.successCount}/${state.chunks.length}');
}
// Check if download was successful
if (downloader.noError) {
final data = downloader.state.asList();
// Process downloaded data
}
Configuration
Downloader Parameters
url: The URL of the file to downloadchunkSize: Size of each download chunk (default: 501001 bytes)p: Number of concurrent connections (default: 2)
Error Handling
The package throws specific exceptions:
UnsupportedException: When the server doesn't support range requestsDownloadFailureException: When download fails due to network issues
Requirements
- Dart SDK: >=3.0.0 <4.0.0
- Flutter: >=3.10.0
License
This project is licensed under the terms specified in the LICENSE file.