initializeDio method
Dio
initializeDio()
Always use this method to initialize the dio client
Implementation
Dio initializeDio() {
dio = Dio(
BaseOptions(
baseUrl: baseUrl,
receiveTimeout: 15000, // 15 seconds
connectTimeout: 15000,
sendTimeout: 15000,
validateStatus: (status) {
return true;
}),
);
dio?.interceptors.add(
InterceptorsWrapper(
onRequest:
(RequestOptions options, RequestInterceptorHandler handler) async {
await setAccessToken();
options.headers = header();
logger.v("REQUEST[${options.method}] => PATH: ${options.uri}"
"=> REQUEST VALUES: ${options.data} => HEADERS: ${options.headers}");
return handler.next(options);
},
onResponse: (response, handler) {
logger
.i("RESPONSE[${response.statusCode}] => DATA: ${response.data}");
return handler.next(response);
},
onError: (err, handler) {
logger.e(
"Error[${err.response?.statusCode}] => DATA: ${err.response?.data}");
switch (err.type) {
case DioErrorType.connectTimeout:
case DioErrorType.sendTimeout:
case DioErrorType.receiveTimeout:
throw DeadlineExceededException(err.requestOptions);
case DioErrorType.response:
switch (err.response?.statusCode) {
case 400:
throw BadRequestException(err.requestOptions);
case 401:
throw UnauthorizedException(err.requestOptions);
case 404:
throw NotFoundException(err.requestOptions);
case 409:
throw ConflictException(err.requestOptions);
case 500:
throw InternalServerErrorException(err.requestOptions);
}
break;
case DioErrorType.cancel:
break;
case DioErrorType.other:
throw NoInternetConnectionException(err.requestOptions);
default:
}
// return handler.next(err);
},
),
);
return dio!;
}