1
0

dio_exceptions.dart 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import 'package:dio/dio.dart';
  2. class DioExceptions implements Exception {
  3. late String message;
  4. DioExceptions.fromDioException(DioException dioError) {
  5. // log("DioException is ${dioError.type}");
  6. switch (dioError.type) {
  7. case DioExceptionType.cancel:
  8. message = "Request to API server was cancelled";
  9. break;
  10. case DioExceptionType.connectionTimeout:
  11. message = "Connection timeout with API server";
  12. break;
  13. case DioExceptionType.receiveTimeout:
  14. message = "Receive timeout in connection with API server";
  15. break;
  16. case DioExceptionType.badResponse:
  17. message = _handleError(
  18. dioError.response?.statusCode,
  19. dioError.response?.statusMessage,
  20. );
  21. break;
  22. case DioExceptionType.sendTimeout:
  23. message = "Send timeout in connection with API server";
  24. break;
  25. case DioExceptionType.connectionError:
  26. message = "No internet.\n you'll get last cached valid response.";
  27. break;
  28. case DioExceptionType.unknown:
  29. message = (dioError.message == "")
  30. ? "Unexpected error occurred"
  31. : (dioError.message.toString());
  32. break;
  33. default:
  34. if (dioError.message?.contains("SocketException") ?? false) {
  35. message = 'No Internet';
  36. } else {
  37. message = "Something went wrong.\n${dioError.message}";
  38. }
  39. break;
  40. }
  41. }
  42. String _handleError(int? statusCode, dynamic error) {
  43. switch (statusCode) {
  44. case 400:
  45. return 'Bad request';
  46. case 401:
  47. return 'Unauthorized';
  48. case 403:
  49. return 'Forbidden';
  50. case 404:
  51. return error;
  52. case 500:
  53. return 'Internal server error';
  54. case 502:
  55. return 'Bad gateway';
  56. default:
  57. return 'Oops something went wrong';
  58. }
  59. }
  60. @override
  61. String toString() => message;
  62. }