request method
Future<Map<String, dynamic> >
request({
- required ApiMethod method,
- required String url,
- dynamic requestData,
- Map<
String, dynamic> ? headers, - Map<
String, dynamic> ? queryParameters, - bool useWithoutToken = false,
- bool cacheResponse = false,
- Duration cacheDuration = const Duration(minutes: 30),
- CancelToken? cancelToken,
- void onSendProgress()?,
- void onReceiveProgress()?,
Implementation
Future<Map<String, dynamic>> request({
required ApiMethod method,
required String url,
dynamic requestData,
Map<String, dynamic>? headers,
Map<String, dynamic>? queryParameters,
bool useWithoutToken = false,
bool cacheResponse = false,
Duration cacheDuration = const Duration(minutes: 30),
CancelToken? cancelToken,
void Function(int, int)? onSendProgress,
void Function(int, int)? onReceiveProgress,
}) async {
try {
// Check cache first if enabled
if (_enableCache && cacheResponse) {
final cached = _cacheBox.get(url);
if (cached != null) return cached;
}
// Make the request
late Response response;
final options = Options(
headers: headers,
extra: {'useWithoutToken': useWithoutToken},
);
switch (method) {
case ApiMethod.get:
response = await _dio.get(
url,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
);
break;
case ApiMethod.post:
response = await _dio.post(
url,
data: requestData,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
);
break;
case ApiMethod.put:
response = await _dio.put(
url,
data: requestData,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
);
break;
case ApiMethod.patch:
response = await _dio.patch(
url,
data: requestData,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
);
break;
case ApiMethod.delete:
response = await _dio.delete(
url,
data: requestData,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
);
break;
}
// Cache response if needed
if (_enableCache && cacheResponse) {
await _cacheBox.put(
url,
response.data,
);
}
return response.data;
} on DioException catch (e) {
throw _handleDioError(e);
}
}