smart_download_manager_plus 1.0.6 copy "smart_download_manager_plus: ^1.0.6" to clipboard
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 #

pub version likes popularity license

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 Range headers
  • 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