smart_download_manager_plus 1.0.6
smart_download_manager_plus: ^1.0.6 copied to clipboard
A Flutter package to download files to Android Downloads folder with notifications.
π Smart Download Manager Plus #
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
π€ Why Smart Download Manager Plus? #
- Built for real production apps, not just demos
- Supports resume downloads (Range requests)
- Handles Android scoped storage (MediaStore) correctly
- Clean and simple API
- Designed for performance and reliability
π₯ Demo #
πΈ Preview #
π Installation #
dependencies:
smart_download_manager_plus: 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 Download #
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 |
π Comparison #
| Feature | Smart Download Manager Plus | Other Packages |
|---|---|---|
| Resume Support | β | β |
| Notifications | β | β οΈ |
| MediaStore Support | β | β |
| Queue System | β | β οΈ |
| Clean API | β | β οΈ |
π§ How It Works #
- Uses Dio for downloading
- Supports HTTP Range requests (resume downloads)
- 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
π Roadmap #
- β Background downloads (WorkManager / BGTaskScheduler)
- β File preview inside app
- β Download grouping
- β Web support
π€ Contributing #
Contributions are welcome! Feel free to open issues or submit PRs.
π License #
MIT License Β© 2026