get<T> method
Future<Result<T> >
get<T>(
- String path, {
- Map<
String, dynamic> ? queryParameters, - FutureOr<
T?> onSuccess(- dynamic data
- FutureOr<
T> onError(- dynamic data
- RestApiClientRequestOptions? options,
- Duration? cacheLifetimeDuration,
override
Performs a GET request to the specified path with optional query parameters and callbacks.
Implementation
@override
Future<Result<T>> get<T>(
String path, {
Map<String, dynamic>? queryParameters,
FutureOr<T?> Function(dynamic data)? onSuccess,
FutureOr<T> Function(dynamic data)? onError,
RestApiClientRequestOptions? options,
Duration? cacheLifetimeDuration,
}) async {
try {
final response = await _dio.get(
path, // The endpoint to hit
queryParameters:
queryParameters, // The parameters to send with the request
options: options?.toOptions(), // Additional Dio options
);
// Cache response if caching is enabled
if (_options.cacheEnabled) {
await cacheHandler.set(response, cacheLifetimeDuration);
}
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
errorData: await _resolveResult(
e.response?.data, onError), // Resolve error data
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 other exceptions
return Result.error(
exception: Exception(e.toString())); // Return a generic error
}
}