download<T> method
Future<Result<T> >
download<T>(
- String urlPath,
- dynamic savePath, {
- dynamic data,
- Map<
String, dynamic> ? queryParameters, - RestApiClientRequestOptions? options,
- ProgressCallback? onReceiveProgress,
- CancelToken? cancelToken,
- bool deleteOnError = true,
- String lengthHeader = Headers.contentLengthHeader,
- FutureOr<
T?> onSuccess(- dynamic data
- FutureOr<
T> onError(- 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
}
}