send method
Future<Response>
send({})
send any type of request GET POST PUT PATCH DELETE DOWNLOAD
Implementation
Future<Response> send(
{required RequestMethod reqMethod,
required String path,
Function(int count, int total)? onSendProgress,
Function(int count, int total)? onReceiveProgress,
CancelToken? cancelToken,
Map<String, dynamic> body = const <String, dynamic>{},
Map<String, dynamic> query = const <String, dynamic>{},
String? saveDirPath}) async {
late Response res;
final nextBody = {}..addAll(body);
final nextQuery = {}..addAll(query);
try {
switch (reqMethod) {
case RequestMethod.get:
res = await _dio.get(
path,
cancelToken: cancelToken,
queryParameters: nextQuery.cast(),
);
break;
case RequestMethod.post:
res = await _dio.post(
path,
data: nextBody.cast(),
onReceiveProgress: onReceiveProgress,
onSendProgress: onSendProgress,
cancelToken: cancelToken,
queryParameters: nextQuery.cast(),
);
break;
case RequestMethod.put:
res = await _dio.put(
path,
data: nextBody.cast(),
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
cancelToken: cancelToken,
queryParameters: nextQuery.cast(),
);
break;
case RequestMethod.patch:
res = await _dio.patch(
path,
data: nextBody.cast(),
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
cancelToken: cancelToken,
queryParameters: nextQuery.cast(),
);
break;
case RequestMethod.delete:
res = await _dio.delete(
path,
data: nextBody.cast(),
cancelToken: cancelToken,
queryParameters: nextQuery.cast(),
);
break;
case RequestMethod.download:
res = await _dio.download(
path,
saveDirPath,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
queryParameters: nextQuery.cast(),
);
break;
default:
throw ("reqMethod Not available ! ");
}
_throwIfNoSuccess(res);
return res;
} on DioException catch (err) {
if (err.type == DioExceptionType.unknown ||
err.type == DioExceptionType.connectionTimeout ||
err.type == DioExceptionType.receiveTimeout ||
err.type == DioExceptionType.sendTimeout) {
throw CustomDioException(err.message, err.response?.statusCode ?? 5000);
}
rethrow;
} finally {
_dio.close();
}
}