handleError function

dynamic handleError(
  1. Object error, [
  2. StackTrace? trace
])

Implementation

dynamic handleError(Object error, [StackTrace? trace]) {
  L.e('[DECORATED_FLUTTER] handleError: $error, trace: $trace');
  final locale = gNavigatorKey.currentContext == null
      ? null
      : Localizations.localeOf(gNavigatorKey.currentContext!);
  final isEnglish = locale?.languageCode == 'en';
  if (error is DioException) {
    String? message = error.message;
    switch (error.type) {
      case DioExceptionType.cancel:
        message = isEnglish ? error.message : '取消请求';
        break;
      case DioExceptionType.sendTimeout:
      case DioExceptionType.connectionTimeout:
      case DioExceptionType.receiveTimeout:
        message = isEnglish ? error.message : '网络连接超时,请稍后重试';
        break;
      case DioExceptionType.badResponse:
        final statusCode = error.response?.statusCode;
        if (statusCode != null) {
          if (statusCode >= 400 && statusCode <= 417) {
            message = isEnglish ? error.message : '访问地址异常,请稍后重试 $statusCode';
          } else if (statusCode >= 500 && statusCode <= 505) {
            message = isEnglish ? error.message : '服务器繁忙 $statusCode';
          }
        }
        break;
      default:
        message = isEnglish ? error.message : '网络不给力,请稍后重试 $_kDioOther';
    }
    toast(message, error: true);
  } else if (error is String) {
    toast(error, error: true);
  } else if (error is SocketException) {
    toast(
      isEnglish ? error.message : '网络不给力,请稍后重试 $_kSocketException',
      error: true,
    );
  } else if (error is HttpException) {
    toast(
      isEnglish ? error.message : '网络不给力,请稍后重试 $_kSocketException',
      error: true,
    );
  } else if (error is BizException) {
    toast(error.message, error: true);
  } else if (error is TimeoutException) {
    toast('操作超时');
  } else if (error is PlatformException) {
    toast('${error.message ?? error.toString()} ${error.code}', error: true);
  } else {
    if (handleCustomError != null) {
      handleCustomError!(error);
    } else {
      toast(isEnglish ? 'Unknown Error' : '遇到未知错误 $error', error: true);
    }
  }
  throw error;
}