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.4KB

  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.CANCEL:
  12. errorDescription = exception_dio_cancle;
  13. break;
  14. case DioErrorType.CONNECT_TIMEOUT:
  15. errorDescription = exception_dio_connect_timeout;
  16. break;
  17. case DioErrorType.DEFAULT:
  18. errorDescription = exception_dio_default;
  19. break;
  20. case DioErrorType.RECEIVE_TIMEOUT:
  21. errorDescription = exception_dio_receive_timeout;
  22. break;
  23. case DioErrorType.RESPONSE:
  24. int statusCode = dioError.response.statusCode;
  25. if (statusCode == 400) {
  26. errorDescription = customMessageError ?? exception_dio_400;
  27. try {
  28. Map errorMap = jsonDecode(dioError.response.data);
  29. var errorCode = ErrorCommon.fromJson(errorMap).errorKey;
  30. switch (errorCode) {
  31. case '1000':
  32. errorDescription = exception_dio_1000;
  33. break;
  34. case '1001':
  35. errorDescription = exception_dio_1001;
  36. break;
  37. case '1002':
  38. errorDescription = exception_dio_1002;
  39. break;
  40. case '1003':
  41. errorDescription = exception_dio_1003;
  42. break;
  43. case '1004':
  44. errorDescription = exception_dio_1004;
  45. break;
  46. case '1005':
  47. errorDescription = exception_dio_1005;
  48. break;
  49. case '1006':
  50. errorDescription = exception_dio_1006;
  51. break;
  52. case '1007':
  53. errorDescription = exception_dio_1007;
  54. break;
  55. case '1008':
  56. errorDescription = exception_dio_1008;
  57. break;
  58. case '1009':
  59. errorDescription = exception_dio_1009;
  60. break;
  61. case '1010':
  62. errorDescription = exception_dio_1010;
  63. break;
  64. case '1011':
  65. errorDescription = exception_dio_1011;
  66. break;
  67. case '1012':
  68. errorDescription = exception_dio_1012;
  69. break;
  70. case '1013':
  71. errorDescription = exception_dio_1013;
  72. break;
  73. case '1014':
  74. errorDescription = exception_dio_1014;
  75. break;
  76. case '1015':
  77. errorDescription = exception_dio_1015;
  78. break;
  79. case '1016':
  80. errorDescription = exception_dio_1016;
  81. break;
  82. case '1017':
  83. errorDescription = exception_dio_1017;
  84. break;
  85. case '1018':
  86. errorDescription = exception_dio_1018;
  87. break;
  88. case '1019':
  89. errorDescription = exception_dio_1019;
  90. break;
  91. case '1020':
  92. errorDescription = exception_dio_1020;
  93. break;
  94. case '1021':
  95. errorDescription = exception_dio_1021;
  96. break;
  97. default:
  98. errorDescription = customMessageError ?? exception_dio_400;
  99. }
  100. } catch (e) {
  101. //
  102. }
  103. } else if (statusCode == 401) {
  104. errorDescription = exception_dio_401;
  105. } else if (statusCode == 403) {
  106. errorDescription = exception_dio_403;
  107. } else if (statusCode == 404) {
  108. errorDescription = exception_dio_404;
  109. } else if (statusCode == 500) {
  110. errorDescription = exception_dio_500;
  111. } else {
  112. errorDescription = exception_common;
  113. }
  114. break;
  115. case DioErrorType.SEND_TIMEOUT:
  116. errorDescription = exception_dio_send_timeout;
  117. break;
  118. }
  119. } catch (e) {
  120. errorDescription = exception_common;
  121. }
  122. return errorDescription;
  123. }
  124. }