downloadFile method

dynamic downloadFile(
  1. dynamic urlPath,
  2. dynamic savePath, {
  3. dynamic onProgress(
    1. int count,
    2. int total
    )?,
  4. dynamic onSuccess()?,
  5. dynamic onFail(
    1. Exception e
    )?,
  6. Map<String, dynamic>? params,
})

Implementation

/*
 * 下载文件
 */
downloadFile(urlPath, savePath,{Function(int count, int total)? onProgress,
  Function()? onSuccess,Function(Exception e)? onFail,Map<String, dynamic>? params,}) async {
  Response response;
  var options = BaseOptions(
    connectTimeout: 15000,
    receiveTimeout: 15000,
    responseType: ResponseType.plain,
    validateStatus: (status){
      // 不使用http状态码判断状态,使用AdapterInterceptor来处理(适用于标准REST风格)
      return true;
    },
//      baseUrl: Constant.BASE_URL,
//      contentType: ContentType('application', 'x-www-form-urlencoded', charset: 'utf-8'),
  );
  Dio _dio2 = Dio(options);
  /// 统一添加身份验证请求头
//    _dio2.interceptors.add(AuthInterceptor());
//    /// 刷新Token
//    _dio2.interceptors.add(TokenInterceptor());
//    /// 打印Log
//    _dio2.interceptors.add(LoggingInterceptor());
//    /// 适配数据
//    _dio2.interceptors.add(AdapterInterceptor());
  try {
    response = await _dio2.download(urlPath, savePath,data: params,onReceiveProgress: (int count, int total){
      //进度
      print("下载文件进度-->$count $total");
      if(onProgress!=null)onProgress(count,total);
    });
    if(onSuccess!=null)onSuccess();
    print('downloadFile success---------${response.data}');
  } on DioError catch (e) {
    print('downloadFile error---------$e');
//      formatError(e);
    if(onFail!=null)onFail(e);
  }
//    return response.data;
}