download<T> method

  1. @override
Future<Result<T>> download<T>(
  1. String urlPath,
  2. dynamic savePath, {
  3. dynamic data,
  4. Map<String, dynamic>? queryParameters,
  5. RestApiClientRequestOptions? options,
  6. ProgressCallback? onReceiveProgress,
  7. CancelToken? cancelToken,
  8. bool deleteOnError = true,
  9. String lengthHeader = Headers.contentLengthHeader,
  10. FutureOr<T?> onSuccess(
    1. dynamic data
    )?,
  11. FutureOr<T> onError(
    1. dynamic data
    )?,
})
override

Downloads a file from the specified URL path to the save path.

Implementation

@override
Future<Result<T>> download<T>(
  String urlPath,
  savePath, {
  data,
  Map<String, dynamic>? queryParameters,
  RestApiClientRequestOptions? options,
  ProgressCallback? onReceiveProgress,
  CancelToken? cancelToken,
  bool deleteOnError = true,
  String lengthHeader = Headers.contentLengthHeader,
  FutureOr<T?> Function(dynamic data)? onSuccess,
  FutureOr<T> Function(dynamic data)? onError,
}) async {
  try {
    final response = await _dio.download(
      urlPath, // The URL path to download from
      savePath, // The local path to save the downloaded file
      queryParameters: queryParameters, // Query parameters
      options: options?.toOptions(), // Additional Dio options
      data: data, // Optional data in request body
      onReceiveProgress: onReceiveProgress, // Progress callback
      cancelToken: cancelToken, // Token to cancel the request
      deleteOnError: deleteOnError, // Flag to delete on error
      lengthHeader: lengthHeader, // Length header for response
    );

    return NetworkResult(
      response: response,
      data: await _resolveResult(
          response.data, onSuccess), // Resolve result data
    );
  } on DioException catch (e) {
    await exceptionHandler.handle(e,
        silent: options?.silentException); // Handle Dio exceptions

    return NetworkResult(
      response: e.response, // Return error response
      exception: e, // Return the exception
      statusCode: e.response?.statusCode, // HTTP status code
      statusMessage: e.response?.statusMessage, // HTTP status message
    );
  } catch (e) {
    debugPrint(e.toString()); // Print any exceptions

    return Result.error(
        exception: Exception(e.toString())); // Return a generic error
  }
}