downloadFile method
下载文件到⚠️沙盒目录下(仅能下载到沙盒目录下)
fileUrl
文件远程地址
fileDirectory
在沙盒目录下的文件夹路径
fileName
文件名称,示例:newApk.apk(注意要拼接后缀.apk或.xxx),无需传递 '/'
isDeleteOriginalFile
如果本地存在相同文件,是否删除已存在文件,默认为true
onCancelTagListener
回调用于取消下载请求的 tag
onProgressListener
回调下载进度
关于 fileDirectory
、fileName
的说明
如沙盒目录为:/data/user/0/com.xxxxx.flutter_native_helper_example/files
fileDirectory
为 'updateApk' ,fileName
为 'new.apk',
那么最终生成的路径就是: /data/user/0/com.xxxxx.flutter_native_helper_example/files/updateApk/new.apk
即你无需关心反斜杠拼接,如果 fileDirectory
想要为两级,那就为 'updateApk/second',
最终路径就为:/data/user/0/com.xxxxx.flutter_native_helper_example/files/updateApk/second/new.apk
如需获取下载进度回调,调用setMethodCallHandler,method为 FlutterNativeConstant.methodDownloadProgress, 回调值为 'double' 类型
注意⚠️:如连续重复调用此方法,Native 端会进行拦截,如需取消下载中的任务,调用 cancelDownload
Implementation
Future<String> downloadFile({
required String fileUrl,
required String fileDirectory,
required String fileName,
bool isDeleteOriginalFile = true,
}) async {
try {
final arguments = <String, dynamic>{
"fileUrl": fileUrl,
"fileDirectory": fileDirectory,
"fileName": fileName,
"isDeleteOriginalFile": isDeleteOriginalFile,
};
return await _channel.invokeMethod("downloadFile", arguments) ?? "";
} catch (e) {
debugPrint("downloadFile.error: $e");
return "";
}
}