0

我怎样才能只显示 DioError 内容提供的消息?

例如,而不是这个:

DioError [DioErrorType.DEFAULT]: User not found!

我只想展示:

User not found!

这是 dio 拦截器代码:

  dio.interceptors
  ..add(InterceptorsWrapper(
    onRequest: (RequestOptions options) {
      print("Dio Request");
      print(options.headers);
      print(options.data);
      print(options.contentType);
      print(options.extra);
      print(options.baseUrl + "" + options.path);
      return options;
    },
    onResponse: (Response response) {
      print("Dio Success Response");
      print(response.data);
      print(response.extra);
      return response;
    },
    onError: (DioError e) async {
      print("Dio Error Response");
      print(e.response);
      print(e.message);
      print(e.type);
      await _errorResponseCheck(e);
    },
  ))

  _errorResponseCheck(DioError e) {
    if (e.response.data["message"] != null) {
      throw HttpException(e.response?.data["message"]?.toString());
    } else {
      return e;
    }
  }
4

1 回答 1

2

例如,您会收到如下响应的异常

I/flutter (19222): DioError [DioErrorType.RESPONSE]: Http status error [400]
I/flutter (19222): uri: https://www.example.com/forgotpassword
I/flutter (19222): statusCode: 400
I/flutter (19222): Response Text:
I/flutter (19222): {"success":false,"message":"Invalid mail id"}

response您可以从of中获取错误消息DioError

on DioError catch (e) {
  final base = BaseModel.fromJson(e.response.data);
  if (!base.success) {
    // Your error message. Invalid mail id
    print('Error Message : ${base.message}'); 
    throw NetworkException(base.message);
  }
}
于 2020-05-15T02:08:32.743 回答