request method
Future<void>
request({
- required HttpMethod method,
- required String url,
- dynamic data,
- Map<
String, dynamic> ? queryParameters, - Options? options,
- Map<
String, String> ? headers, - CancelToken? cancelToken,
- void onSendProgress()?,
- void onReceiveProgress()?,
- required void onCatchDioException(
- DioException
- required void onCatchException(
- dynamic
- required void onSuccess(
- Response
Implementation
Future<void> request({
required HttpMethod method,
required String url,
dynamic data,
Map<String, dynamic>? queryParameters,
Options? options,
Map<String, String>? headers,
CancelToken? cancelToken,
void Function(int, int)? onSendProgress,
void Function(int, int)? onReceiveProgress,
required void Function(DioException) onCatchDioException,
required void Function(dynamic) onCatchException,
required void Function(dio.Response) onSuccess,
}) async {
dio.Response response;
Options? defaultOptions;
//set base option for request if not provided
if (options != null) {
defaultOptions = options;
} else {
Map<String, String> customHeaders = headers ?? {};
defaultOptions = Options(headers: customHeaders);
}
try {
// Perform the request based on the specified HTTP method.
switch (method) {
// Perform a GET request using Dio with provided parameters.
case HttpMethod.get:
response = await _dio.get(
url,
data: data,
options: defaultOptions,
queryParameters: queryParameters,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
);
break;
case HttpMethod.post:
// Perform a POST request using Dio with provided parameters.
response = await _dio.post(
url,
data: data,
queryParameters: queryParameters,
options: defaultOptions,
onSendProgress: onSendProgress,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
);
break;
case HttpMethod.patch:
// Perform a PATCH request using Dio with provided parameters.
response = await _dio.patch(
url,
data: data,
queryParameters: queryParameters,
options: defaultOptions,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
);
break;
case HttpMethod.put:
// Perform a PUT request using Dio with provided parameters.
response = await _dio.put(
url,
data: data,
queryParameters: queryParameters,
options: defaultOptions,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
);
break;
case HttpMethod.delete:
// Perform a DELETE request using Dio with provided parameters.
response = await _dio.delete(
url,
data: data,
options: defaultOptions,
queryParameters: queryParameters,
cancelToken: cancelToken,
);
break;
default:
throw Exception('Unknown method');
}
onSuccess(response);
} on DioException catch (e) {
onCatchDioException(e);
} catch (e) {
onCatchException(e);
}
}