downloadFile<T> method

Future<T> downloadFile<T>(
  1. String url,
  2. dynamic savePath, {
  3. dynamic onReceiveProgress(
    1. int progress,
    2. int total
    )?,
  4. Options? options,
  5. Map<String, dynamic>? queryParameters,
})

下载文件, url 下载路径的地址 savePath 保存路径的地址 onReceiveProgress 下载进度回调

Implementation

Future<T> downloadFile<T>(String url, savePath,
    {Function(int progress, int total)? onReceiveProgress,
    Options? options,
    Map<String, dynamic>? queryParameters}) async {
  var cancelToken = CancelToken();
  try {
    Response<dynamic> response = await _dio.download(url, savePath,
        onReceiveProgress: onReceiveProgress,
        cancelToken: cancelToken,
        options: options,
        queryParameters: queryParameters);
    if (response.statusCode == RxDioConstants.networkStatus) {
      Map<String, dynamic> data = json.decode(response.toString());
      //对象数据类型
      BaseBean bean = BaseBean<T>.fromJson(data);
      if (bean.isSuccess()) {
        /// 返回泛型Bean
        return await bean.data as T;
      } else {
        return await Future.error(bean.message);
      }
    }
  } catch (e) {
    return Future.error(e);
  } finally {
    cancelToken.cancel();
  }
  return Future.error(e);
}