NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #844 most downloaded on pub.dev
A multi-platform background file downloader and uploader. Define the task, enqueue and monitor progress
Last release 9 days ago
25 Sep 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
138 releases · first in 2022
Adds support for MacOS, Windows and Linux and refactored the backend to be more easily extensible.
Adds support for MacOS, Windows and Linux and refactored the backend to be more easily extensible.
Changes FileDownloader usage from static to a singleton. This means that instead of calling
FileDownloader.downloader(...) now call FileDownloader().downloader(...) etc.
Calling .initialize is not longer required.
iOS BaseDirectory.applicationSupport now uses iOS applicationSupportDirectory instead of libraryDirectory
iOS BaseDirectory.applicationSupport now uses iOS applicationSupportDirectory instead of libraryDirectory
One column per quarter.
Version 3 introduces uploads, onProgress and onStatus callbacks passed to download and upload, and cleans up the API to be less verbose.
Version 3 introduces uploads, onProgress and onStatus callbacks passed to download and upload,
and cleans up the API to be less verbose.
The class hierarchy is Request -> Task -> (DownloadTask | UploadTask), and several
methods and callbacks will return or expect a Task that may be a DownloadTask or UploadTask.
To align naming convention, several class and enum names have been changed:
The url and urlQueryParameters passed to a BackgroundDownloadTask or Request must be encoded if necessary. For example, if the url or query parameters
The url and urlQueryParameters passed to a BackgroundDownloadTask or Request must be encoded if necessary. For example, if the url or query parameters contain a space, it must be replaced with %20 per urlencoding
Added option to use a POST request: setting the post field to a String or UInt8List passes that data to the server using the POST method to obtain you
Changes:
post field to a String or UInt8List passes that data to the server using the POST method to obtain your filerequest method, taking a Request object (a superclass of BackgroundDownloadTask), for simple server requests, where you process the server response directly (i.e. not in a file).onMethodCall handlerFix for issue with Firebase plugin onMethodCall handler
Fix for issue with
Firebase plugin onMethodCall handler
Added option to automatically retry failed downloads. This is a breaking change, though for most existing implementations no or very little change is…
Added option to automatically retry failed downloads. This is a breaking change, though for most existing implementations no or very little change is required.
The main change is the addition of enqueued and waitingToRetry status to the
DownloadTaskStatus enum (and removal of undefined). As a result, when checking a
DownloadStatusUpdate (e.g. using a switch statement) you need to cover these new cases (and
for existing implementations can typically just ignore them). The progressUpdate equivalent of
waitingToRetry is a value of -4.0, but for existing implementations this will never be
emitted, as they won't have retries.
The second change is that a task now emits enqueued when enqueued, and running once the actual
download (on the native platform) starts. In existing applications this can generally be ignored,
but it allows for more precise status updates.
To use automatic retries, simply set the retries field of the BackgroundDownloadTask to an
integer between 0 and 10. A normal download (without the need for retries) will follow status
updates from enqueued -> running -> complete (or notFound). If retries has been set and
the task fails, the sequence will be enqueued -> running ->
waitingToRetry -> enqueued -> running -> complete (if the second try succeeds, or more
retries if needed).
Fix for issue with Firebase plugin onMethodCall handler
Fix for issue with
Firebase plugin onMethodCall handler
Added option to set requiresWiFi on the BackgroundDownloadTask, which ensures the task won't start downloading unless a WiFi network is available. By
Added option to set requiresWiFi on the BackgroundDownloadTask, which ensures the task won't
start downloading unless a WiFi network is available. By default requiresWiFi is false, and
downloads will use the cellular (or metered) network if WiFi is not available, which may incur cost.
Added allTasks method to get a list of running tasks. Use allTaskIds to get a list of taskIds only.
Added allTasks method to get a list of running tasks. Use allTaskIds to get a list of taskIds
only.
Added note to README referring to an issue ( and fix) where the firebase plugin interferes with the downloader
Added note to README referring to an issue ( and fix) where the firebase plugin interferes with the downloader
Improved example app, updated documentation and fixed minor Android bug
Improved example app, updated documentation and fixed minor Android bug
Added downloadBatch method to enqueue and wait for completion of a batch of downloads
Added downloadBatch method to enqueue and wait for completion of a batch of downloads
Added option to use an event listener instead of (or in addition to) callbacks
Added option to use an event listener instead of (or in addition to) callbacks
Added FileDownloader.download as a convenience method for simple downloads. This method's Future completes only after the download has completed or fa
Added FileDownloader.download as a convenience method for simple downloads. This method's Future completes only after the download has completed or failed, and can be used for simple downloads where status and progress checking is not required.
Added headers and metaData fields to the BackgroundDownloadTask. Headers will be added to the request, and metaData is ignored but may be helpful to t
Added headers and metaData fields to the BackgroundDownloadTask. Headers will be added to the request, and metaData is ignored but may be helpful to the user
Replaced Ktor client with a basic Kotlin implementation
Replaced Ktor client with a basic Kotlin implementation
Initial release
Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →