downloadFile method

Future<String> downloadFile({
  1. required String fileUrl,
  2. required String fileDirectory,
  3. required String fileName,
  4. bool isDeleteOriginalFile = true,
})

下载文件到⚠️沙盒目录下(仅能下载到沙盒目录下)

fileUrl 文件远程地址 fileDirectory 在沙盒目录下的文件夹路径 fileName 文件名称,示例:newApk.apk(注意要拼接后缀.apk或.xxx),无需传递 '/' isDeleteOriginalFile 如果本地存在相同文件,是否删除已存在文件,默认为true onCancelTagListener 回调用于取消下载请求的 tag onProgressListener 回调下载进度

关于 fileDirectoryfileName 的说明 如沙盒目录为:/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 "";
  }
}