handleDioError method
Future
handleDioError({
- required dynamic error,
- required StackTrace stackTrace,
- required Future retryCall(),
- int retries = 1,
Implementation
Future<dynamic> handleDioError({
required dynamic error,
required StackTrace stackTrace,
required Future<dynamic> Function() retryCall,
int retries = 1,
}) async {
if (error is DioException) {
final res = error.response;
final statusCode = error.response?.statusCode;
Map<int, VoidCallback>? statusCodeHandler = handleStatusCode;
ErrorLogger.instance.logError(
file: "error_handler",
event: "handleDioError",
error: "$error \n"
"${error.requestOptions.method} request to ${error.requestOptions.path}\n"
"Server response: ${res != null && res.data is Map<String, dynamic> ? ErrorResponse.fromJson(res.data).toJson() : null}",
stackTrace: stackTrace,
);
if (statusCode != null) {
if (statusCodeHandler != null &&
statusCodeHandler.containsKey(statusCode)) {
statusCodeHandler[statusCode]?.call();
}
}
switch (error.type) {
case DioExceptionType.connectionTimeout:
// TODO: Handle this case.
break;
case DioExceptionType.sendTimeout:
// TODO: Handle this case.
break;
case DioExceptionType.receiveTimeout:
// TODO: Handle this case.
break;
case DioExceptionType.badCertificate:
// TODO: Handle this case.
break;
case DioExceptionType.badResponse:
// TODO: Handle this case.
break;
case DioExceptionType.cancel:
// TODO: Handle this case.
break;
case DioExceptionType.connectionError:
// TODO: Handle this case.
break;
case DioExceptionType.unknown:
if (error.error is SocketException ||
error.error is HandshakeException) {
return handleDefaultError(error: error.error, retryCall: retryCall);
}
break;
}
final resData = error.response?.data;
if (resData == null) {
return handleDefaultError(error: error.error, retryCall: retryCall);
}
return ErrorResponse.fromJson(
resData,
);
} else {
return handleDefaultError(error: error, retryCall: retryCall);
}
}