request method

Future<void> request({
  1. required HttpMethod method,
  2. required String url,
  3. dynamic data,
  4. Map<String, dynamic>? queryParameters,
  5. Options? options,
  6. Map<String, String>? headers,
  7. CancelToken? cancelToken,
  8. void onSendProgress(
    1. int,
    2. int
    )?,
  9. void onReceiveProgress(
    1. int,
    2. int
    )?,
  10. required void onCatchDioException(
    1. DioException
    ),
  11. required void onCatchException(
    1. dynamic
    ),
  12. required void onSuccess(
    1. 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);
  }
}