download static method

Future<void> download(
  1. String fileUrl,
  2. String filePath, {
  3. required dynamic callback(
    1. DownloadState value
    ),
  4. ProgressCallback? onProgress,
  5. Map<String, dynamic>? queryParameters,
  6. CancelToken? cancelToken,
  7. bool deleteOnError = true,
  8. String lengthHeader = Headers.contentLengthHeader,
  9. dynamic data,
  10. Options? options,
})

Using Dio to realize file download function

Implementation

static Future<void> download(
  String fileUrl,
  String filePath, {
  required Function(DownloadState value) callback,
  ProgressCallback? onProgress,
  Map<String, dynamic>? queryParameters,
  CancelToken? cancelToken,
  bool deleteOnError = true,
  String lengthHeader = Headers.contentLengthHeader,
  dynamic data,
  Options? options,
}) async {
  callback(DownloadState.none);

  try {
    callback(DownloadState.downloading);

    final Response<dynamic> response = await _dio().download(
      fileUrl,
      filePath,
      onReceiveProgress: onProgress,
      queryParameters: queryParameters,
      cancelToken: cancelToken,
      deleteOnError: deleteOnError,
      lengthHeader: lengthHeader,
      data: data,
      options: options,
    );

    callback(response.statusCode == 200 ? DownloadState.done : DownloadState.fail);
  } catch (e) {
    callback(DownloadState.error);
  }
}