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