You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
4.3KB

  1. import 'dart:convert';
  2. import 'package:dio/dio.dart';
  3. import 'package:farm_tpf/custom_model/ErrorCommon.dart';
  4. import 'package:farm_tpf/utils/const_string.dart';
  5. class AppException {
  6. static String handleError(dynamic error, {String? customMessageError}) {
  7. String errorDescription = "";
  8. try {
  9. DioError dioError = error as DioError;
  10. switch (dioError.type) {
  11. case DioErrorType.response:
  12. int statusCode = dioError.response?.statusCode ?? -1;
  13. if (statusCode == 400) {
  14. errorDescription = customMessageError ?? exception_dio_400;
  15. try {
  16. Map<String, dynamic> errorMap = jsonDecode(dioError.response?.data);
  17. var errorCode = ErrorCommon.fromJson(errorMap).errorKey;
  18. switch (errorCode) {
  19. case '1000':
  20. errorDescription = exception_dio_1000;
  21. break;
  22. case '1001':
  23. errorDescription = exception_dio_1001;
  24. break;
  25. case '1002':
  26. errorDescription = exception_dio_1002;
  27. break;
  28. case '1003':
  29. errorDescription = exception_dio_1003;
  30. break;
  31. case '1004':
  32. errorDescription = exception_dio_1004;
  33. break;
  34. case '1005':
  35. errorDescription = exception_dio_1005;
  36. break;
  37. case '1006':
  38. errorDescription = exception_dio_1006;
  39. break;
  40. case '1007':
  41. errorDescription = exception_dio_1007;
  42. break;
  43. case '1008':
  44. errorDescription = exception_dio_1008;
  45. break;
  46. case '1009':
  47. errorDescription = exception_dio_1009;
  48. break;
  49. case '1010':
  50. errorDescription = exception_dio_1010;
  51. break;
  52. case '1011':
  53. errorDescription = exception_dio_1011;
  54. break;
  55. case '1012':
  56. errorDescription = exception_dio_1012;
  57. break;
  58. case '1013':
  59. errorDescription = exception_dio_1013;
  60. break;
  61. case '1014':
  62. errorDescription = exception_dio_1014;
  63. break;
  64. case '1015':
  65. errorDescription = exception_dio_1015;
  66. break;
  67. case '1016':
  68. errorDescription = exception_dio_1016;
  69. break;
  70. case '1017':
  71. errorDescription = exception_dio_1017;
  72. break;
  73. case '1018':
  74. errorDescription = exception_dio_1018;
  75. break;
  76. case '1019':
  77. errorDescription = exception_dio_1019;
  78. break;
  79. case '1020':
  80. errorDescription = exception_dio_1020;
  81. break;
  82. case '1021':
  83. errorDescription = exception_dio_1021;
  84. break;
  85. default:
  86. errorDescription = customMessageError ?? exception_dio_400;
  87. }
  88. } catch (e) {
  89. //
  90. }
  91. } else if (statusCode == 401) {
  92. errorDescription = exception_dio_401;
  93. } else if (statusCode == 403) {
  94. errorDescription = exception_dio_403;
  95. } else if (statusCode == 404) {
  96. errorDescription = exception_dio_404;
  97. } else if (statusCode == 500) {
  98. errorDescription = exception_dio_500;
  99. } else {
  100. errorDescription = exception_common;
  101. }
  102. break;
  103. case DioErrorType.connectTimeout:
  104. // TODO: Handle this case.
  105. break;
  106. case DioErrorType.sendTimeout:
  107. // TODO: Handle this case.
  108. break;
  109. case DioErrorType.receiveTimeout:
  110. // TODO: Handle this case.
  111. break;
  112. case DioErrorType.cancel:
  113. // TODO: Handle this case.
  114. break;
  115. case DioErrorType.other:
  116. // TODO: Handle this case.
  117. break;
  118. }
  119. } catch (e) {
  120. errorDescription = exception_common;
  121. }
  122. return errorDescription;
  123. }
  124. }