al_downloader
A URL-based flutter downloader that supports to download any type of file and automatically manages a lot of things.
If you need Chinese Document, click here .
Features
manage download tasks by url
simple download status
I/O infrequently
provide convenient download handle
support batch download
manage automatically files without requiring to be specified a download path
based on flutter_downloader
Integration
Native Config: same as flutter_downloader native config
add the following line to your pubspec.yaml
dependencies:
al_downloader: ^1.8.4
run the following line with your command line
flutter packages get
import the following line, then you can use al_downloader
import 'package:al_downloader/al_downloader.dart' ;
Usage
ALDownloader
Initialize
ALDownloader .initialize ();
Configure print
ALDownloader .configurePrint (true , frequentEnabled: false );
Download
ALDownloader .download (url,
directoryPath: directoryPath,
fileName: fileName,
handlerInterface:
ALDownloaderHandlerInterface (progressHandler: (progress) {
debugPrint (
'ALDownloader | download progress = $progress , url = $url \n' );
}, succeededHandler: () {
debugPrint ('ALDownloader | download succeeded, url = $url \n' );
}, failedHandler: () {
debugPrint ('ALDownloader | download failed, url = $url \n' );
}, pausedHandler: () {
debugPrint ('ALDownloader | download paused, url = $url \n' );
}));
Add a handler interface
ALDownloader .addHandlerInterface (
ALDownloaderHandlerInterface (progressHandler: (progress) {
debugPrint (
'ALDownloader | download progress = $progress , url = $url \n' );
}, succeededHandler: () {
debugPrint ('ALDownloader | download succeeded, url = $url \n' );
}, failedHandler: () {
debugPrint ('ALDownloader | download failed, url = $url \n' );
}, pausedHandler: () {
debugPrint ('ALDownloader | download paused, url = $url \n' );
}),
url);
Add a forever handler interface
ALDownloader .addForeverHandlerInterface (
ALDownloaderHandlerInterface (progressHandler: (progress) {
debugPrint (
'ALDownloader | download progress = $progress , url = $url \n' );
}, succeededHandler: () {
debugPrint ('ALDownloader | download succeeded, url = $url \n' );
}, failedHandler: () {
debugPrint ('ALDownloader | download failed, url = $url \n' );
}, pausedHandler: () {
debugPrint ('ALDownloader | download paused, url = $url \n' );
}),
url);
Remove handler interface
ALDownloader .removeHandlerInterfaceForUrl (url);
Pause download
ALDownloader .pause (url);
Cancel download
ALDownloader .cancel (url);
Remove download
ALDownloader .remove (url);
Get download status
final status = await ALDownloader .getStatusForUrl (url);
Get download progress
final progress = await ALDownloader .getProgressForUrl (url);
Get task
final task = await ALDownloader .getTaskForUrl (url);
Get all tasks
final tasks = await ALDownloader .tasks;
ALDownloaderBatcher
Batch download
ALDownloaderBatcher .download (urls,
handlerInterface:
ALDownloaderHandlerInterface (progressHandler: (progress) {
debugPrint ('ALDownloader | batch | download progress = $progress \n' );
}, succeededHandler: () {
debugPrint ('ALDownloader | batch | download succeeded\n' );
}, failedHandler: () {
debugPrint ('ALDownloader | batch | download failed\n' );
}, pausedHandler: () {
debugPrint ('ALDownloader | batch | download paused\n' );
}));
Add a handler interface for batch
ALDownloaderBatcher .addHandlerInterface (
ALDownloaderHandlerInterface (progressHandler: (progress) {
debugPrint ('ALDownloader | batch | download progress = $progress \n' );
}, succeededHandler: () {
debugPrint ('ALDownloader | batch | download succeeded\n' );
}, failedHandler: () {
debugPrint ('ALDownloader | batch | download failed\n' );
}, pausedHandler: () {
debugPrint ('ALDownloader | batch | download paused\n' );
}),
urls);
Get download status for a set of urls
final status = await ALDownloaderBatcher .getStatusForUrls (urls);
Get tasks
final tasks = await ALDownloaderBatcher .getTasksForUrls (urls);
ALDownloaderFileManager - A manager that manages file by url
final physicalFilePath =
await ALDownloaderFileManager .getPhysicalFilePathForUrl (url);
debugPrint (
'ALDownloader | get physical file path for [url], url = $url , path = $physicalFilePath \n' );
Note :
1. If the persistent file was removed by exceptional means, such as the cache folder being deleted by some business code, call [remove] and then call [download] to re-download for fixing the problem.
Key File Of Example
iOS
Android
Contributing
Welcome contribution!
Welcome to open issue or PR for any problem, suggestion and idea!
Maintainer: jackleemeta (jackleemeta@outlook.com)