smart_download_manager_plus 1.0.0
smart_download_manager_plus: ^1.0.0 copied to clipboard
A Flutter package to download files to Android Downloads folder with notifications.
Flutter Download Manager #
A powerful, resumable, and queue-based download manager for Flutter — built for production apps.
Highlights #
- Parallel downloads with queue system
- Resume & pause downloads
- Smart retry mechanism
- Real-time progress & speed tracking
- Save directly to Downloads (Android MediaStore)
- iOS support (Documents directory)
- Built-in notifications
- Batch downloads
- Persistent tasks (auto restore)
- Open file automatically after download
Preview #
[Screenshot_1] [Screenshot_2] [Screenshot_3] [Screenshot_4]
Installation #
dependencies:
flutter_download_manager: latest
Quick Start #
Initialize #
await
DownloadNotificationService.init
();await
DownloadNotificationService.requestPermission
();
Create Controller #
final controller = DownloadController(
maxConcurrent: 2,
);
Download a File #
final task = controller.addTask(
'https://example.com/file.pdf',
subFolder: 'MyApp',
openAfterDownload: true,
);
await
controller.startTask
(
task
);
Usage Examples #
Download PDF #
controller.addTask
('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
'
,openAfterDownload:
true
,
);
Download Image #
controller.addTask
('https://www.w3.org/Icons/w3c_home.png
'
,
);
Batch Download #
controller.addBatch
([
'https://example.com/file1.pdf',
'https://example.com/file2.png',
]);
Pause / Resume #
controller.pauseTask
(
task
);
controller
.
resumeTask
(
task
);
Cancel #
await
controller.cancelTask
(
task
);
Open File After Download #
Automatically open files when completed:
controller.addTask
(
url
,
openAfterDownload
:
true
,
);
File Storage #
Android #
- Uses MediaStore API
- Saves to Downloads/
- No storage permission required
iOS #
- Saves to Application Documents Directory
Listen to Progress #
controller.onTaskUpdated.listen
(
(task) {
print(task.progress);
});
Configuration #
| Option | Description |
|---|---|
| maxConcurrent | Number of parallel downloads |
| priority | Download priority |
| headers | Custom request headers |
| retryDelay | Delay between retries |
| maxRetries | Retry attempts |
| subFolder | Save inside subfolder |
| openAfterDownload | Auto open file |
How It Works #
- Uses Dio for downloading
- Supports HTTP Range requests (resume)
- Stores tasks using SharedPreferences
- Uses MethodChannel for Android file saving
⚠️ Notes #
- Resume requires server support for
Rangeheaders - Some file types require external apps to open
- Android 13+ requires notification permission