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.

144 lines
4.9KB

  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. final rawData = dioError.response?.data;
  17. Map<String, dynamic> errorMap;
  18. if (rawData is String) {
  19. errorMap = json.decode(rawData);
  20. } else if (rawData is Map) {
  21. errorMap = Map<String, dynamic>.from(rawData);
  22. } else {
  23. throw Exception("Unsupported error format");
  24. }
  25. var errorCode = ErrorCommon.fromJson(errorMap).errorKey;
  26. switch (errorCode) {
  27. case '-1':
  28. errorDescription = exception_dio_minus_1;
  29. break;
  30. case '1000':
  31. errorDescription = exception_dio_1000;
  32. break;
  33. case '1001':
  34. errorDescription = exception_dio_1001;
  35. break;
  36. case '1002':
  37. errorDescription = exception_dio_1002;
  38. break;
  39. case '1003':
  40. errorDescription = exception_dio_1003;
  41. break;
  42. case '1004':
  43. errorDescription = exception_dio_1004;
  44. break;
  45. case '1005':
  46. errorDescription = exception_dio_1005;
  47. break;
  48. case '1006':
  49. errorDescription = exception_dio_1006;
  50. break;
  51. case '1007':
  52. errorDescription = exception_dio_1007;
  53. break;
  54. case '1008':
  55. errorDescription = exception_dio_1008;
  56. break;
  57. case '1009':
  58. errorDescription = exception_dio_1009;
  59. break;
  60. case '1010':
  61. errorDescription = exception_dio_1010;
  62. break;
  63. case '1011':
  64. errorDescription = exception_dio_1011;
  65. break;
  66. case '1012':
  67. errorDescription = exception_dio_1012;
  68. break;
  69. case '1013':
  70. errorDescription = exception_dio_1013;
  71. break;
  72. case '1014':
  73. errorDescription = exception_dio_1014;
  74. break;
  75. case '1015':
  76. errorDescription = exception_dio_1015;
  77. break;
  78. case '1016':
  79. errorDescription = exception_dio_1016;
  80. break;
  81. case '1017':
  82. errorDescription = exception_dio_1017;
  83. break;
  84. case '1018':
  85. errorDescription = exception_dio_1018;
  86. break;
  87. case '1019':
  88. errorDescription = exception_dio_1019;
  89. break;
  90. case '1020':
  91. errorDescription = exception_dio_1020;
  92. break;
  93. case '1021':
  94. errorDescription = exception_dio_1021;
  95. break;
  96. case '9999':
  97. errorDescription = exception_dio_9999;
  98. break;
  99. default:
  100. errorDescription = customMessageError ?? exception_dio_400;
  101. }
  102. } catch (e) {
  103. //
  104. }
  105. } else if (statusCode == 401) {
  106. errorDescription = exception_dio_401;
  107. } else if (statusCode == 403) {
  108. errorDescription = exception_dio_403;
  109. } else if (statusCode == 404) {
  110. errorDescription = exception_dio_404;
  111. } else if (statusCode == 500) {
  112. errorDescription = exception_dio_500;
  113. } else {
  114. errorDescription = exception_common;
  115. }
  116. break;
  117. case DioErrorType.connectTimeout:
  118. // TODO: Handle this case.
  119. break;
  120. case DioErrorType.sendTimeout:
  121. // TODO: Handle this case.
  122. break;
  123. case DioErrorType.receiveTimeout:
  124. // TODO: Handle this case.
  125. break;
  126. case DioErrorType.cancel:
  127. // TODO: Handle this case.
  128. break;
  129. case DioErrorType.other:
  130. // TODO: Handle this case.
  131. break;
  132. }
  133. } catch (e) {
  134. errorDescription = exception_common;
  135. }
  136. return errorDescription;
  137. }
  138. }