getErrorFromDioError function
Implementation
NetworkError getErrorFromDioError(DioException error) {
final NetworkError networkExceptions;
switch (error.type) {
case DioExceptionType.cancel:
networkExceptions = const NetworkError.requestCancelled();
break;
case DioExceptionType.connectionTimeout:
networkExceptions = const NetworkError.requestTimeout();
break;
case DioExceptionType.unknown:
if (error.error == MocksPaths.error) {
networkExceptions = const NetworkError.mockNotFoundError();
} else if (error.toString().contains('is not a subtype of')) {
networkExceptions = const NetworkError.unableToProcess();
} else {
networkExceptions = const NetworkError.noInternetConnection();
}
break;
case DioExceptionType.receiveTimeout:
networkExceptions = const NetworkError.sendTimeout();
break;
case DioExceptionType.badResponse:
final errorDescription =
error.response?.data?['error']?['error_description'];
final errorType = error.response?.data?['error']?['error_type'];
if (errorType != null && errorType == 'INFO_NOT_MATCHING') {
return const NetworkError.infoNotMatching();
}
if (errorDescription != null && errorDescription is List) {
return NetworkError.badRequestListErrors(
(errorDescription).map((e) => e as String).toList(),
);
}
networkExceptions = _checkStatusCode(error.response?.statusCode);
break;
case DioExceptionType.sendTimeout:
networkExceptions = const NetworkError.sendTimeout();
break;
case DioExceptionType.badCertificate:
networkExceptions = const NetworkError.badRequest();
break;
case DioExceptionType.connectionError:
networkExceptions = const NetworkError.badRequest();
break;
}
return networkExceptions;
}