ParallelHttpDownloadWorker class final
Parallel chunked HTTP download worker configuration.
Splits a single file download into numChunks parallel byte-range
requests (HTTP/1.1 Range header, RFC 7233), downloads them
concurrently on the native side, then merges the parts into a single
output file — all without loading the file into memory.
When to use over HttpDownloadWorker:
- Files larger than ~50 MB where parallel chunks give real speed-up.
- Servers that support
Accept-Ranges: bytes(most CDNs do). - When you want faster downloads on high-bandwidth connections.
Automatic fallback: If the server does not advertise
Accept-Ranges: bytes or does not return a Content-Length, the
worker automatically falls back to a single sequential download
(identical to HttpDownloadWorker).
Example
await NativeWorkManager.enqueue(
taskId: 'big-video',
trigger: TaskTrigger.oneTime(),
worker: NativeWorker.parallelHttpDownload(
url: 'https://cdn.example.com/movie.mp4',
savePath: '/data/user/0/com.example/files/movie.mp4',
numChunks: 4, // default
showNotification: true,
),
constraints: Constraints.networkRequired,
);
Progress events
Progress is reported as aggregate bytes across all chunks, so the TaskProgress.progress field rises smoothly from 0 to 100 even when chunks finish out of order.
Resume support
Each chunk is saved to savePath.partN temporarily. If the task is
interrupted, a subsequent enqueue will pick up any completed parts and
only re-download missing or incomplete chunks.
Constructors
-
ParallelHttpDownloadWorker({required String url, required String savePath, int numChunks = 4, Map<
String, String> headers = const {}, Duration timeout = const Duration(minutes: 10), String? expectedChecksum, String checksumAlgorithm = 'SHA-256', bool showNotification = false, String? notificationTitle, String? notificationBody, bool skipExisting = false}) -
const
Properties
- checksumAlgorithm → String
-
Hashing algorithm for checksum verification (default:
'SHA-256').final - expectedChecksum → String?
-
Expected checksum for the merged file (optional).
final
- hashCode → int
-
The hash code for this object.
no setterinherited
-
headers
→ Map<
String, String> -
Optional HTTP headers sent with every chunk request.
final
- notificationBody → String?
-
Body text for the progress notification.
final
- notificationTitle → String?
-
Title for the progress notification.
final
- numChunks → int
-
Number of parallel byte-range chunks (1–16, default 4).
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- savePath → String
-
Absolute path where the merged file will be saved.
final
- showNotification → bool
-
Show a system notification with aggregate download progress.
final
- skipExisting → bool
-
Skip the download if savePath already exists on disk.
final
- timeout → Duration
-
Per-chunk request timeout (default: 10 minutes).
final
- url → String
-
The URL to download from.
final
- workerClassName → String
-
Get the worker class name for native side.
no setteroverride
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toMap(
) → Map< String, dynamic> -
Convert to map for platform channel.
override
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited