simple_downloader

一个Flutter包,用于使用http更简单、更轻松地处理文件下载。

入门

在您的Flutter项目中,将依赖项添加到pubspec.yaml中

dependencies:
...
simple_downloader: ^0.0.1

用法

导入包

import 'package:simple_downloader/simple_downloader.dart';

初始化

late SimpleDownloader _downloader;

double _progress = 0.0;
int _offset = 0;
int _total = 0;

DownloadStatus _status = DownloadStatus.undefined;
DownloaderTask _task = const DownloaderTask(
url:
    "https://file-examples.com/storage/fe2de9ae4662c61a094f3db/2017/10/file_example_JPG_2500kB.jpg",
fileName: "file_example.jpg",
);

@override
void initState() {
    super.initState();
    init();
}

Future<void> init() async {
    final pathFile = (await path.getExternalStorageDirectory())!.path;
    if (!mounted) return;

    _task = _task.copyWith(
        downloadPath: pathFile,
    );

    _downloader = SimpleDownloader.init(task: _task);

    _downloader.callback.addListener(() {
        setState(() {
            _progress = _downloader.callback.progress;
            _status = _downloader.callback.status;
            _total = _downloader.callback.total;
            _offset = _downloader.callback.offset;
        });
    });
}

处置

@override
void dispose() {
    _downloader.dispose();
    super.dispose();
}

开始下载

_downloader.download();

暂停下载

_downloader.pause();

恢复下载

_downloader.resume();

取消下载

_downloader.cancel();

重试下载

_downloader.retry();

打开已下载文件(仅支持Android)

final isSuccess = (await _downloader.open())!;

if(!isSuccess){
    debugPrint("Failed to open downloaded file.");
}

Android 集成

为了处理打开已下载文件的点击操作,您需要添加一些额外的配置。

将以下内容添加到 AndroidManifest.xml

<application>
        ...
        <provider
            android:name="adry.app.simple_downloader.FileProvider"
            android:authorities="${applicationId}.simple_downloader.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_path"/>
        </provider>  
<application>

为了打开APK文件,您的应用程序需要REQUEST_INSTALL_PACKAGES权限。

将以下内容添加到 AndroidManifest.xml

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />     

GitHub

查看 Github