提交 c0f30d33 authored 作者: 史晓晨's avatar 史晓晨

feat:优化网络异常处理

上级 916d96cd
......@@ -105,7 +105,7 @@ abstract class BaseDio {
);
onNetSuccess(response, successCallback, errorCallback);
} on DioException catch (e) {
var result = await _handleHttpException(e.response);
var result = await _handleHttpException(e);
// result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写
if (result != null) {
await errorCallback?.call(result["code"], result["message"]);
......@@ -146,7 +146,7 @@ abstract class BaseDio {
return {"code": 400, "message": "数据解析错误"};
}
} on DioException catch (e) {
var result = await _handleHttpException(e.response);
var result = await _handleHttpException(e);
// result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写
if (result != null) {
return result;
......@@ -184,7 +184,24 @@ abstract class BaseDio {
}
/// 处理http异常
Future<Map<String, dynamic>?> _handleHttpException(Response? response) async {
Future<Map<String, dynamic>?> _handleHttpException(DioException e) async {
switch (e.type) {
case DioExceptionType.connectionError:
return {"code": -500, "message": "网络连接异常,请检查网络设置"};
case DioExceptionType.connectionTimeout:
return {"code": -500, "message": "连接服务器超时,请稍后再试"};
case DioExceptionType.sendTimeout:
return {"code": -500, "message": "发送数据超时,请重试"};
case DioExceptionType.receiveTimeout:
return {"code": -500, "message": "接收数据超时,请重试"};
default:
return _handleHttpOtherException(e.response);
}
}
/// 其他异常处理
Future<Map<String, dynamic>?> _handleHttpOtherException(
Response? response) async {
if (response == null) {
return {"code": -500, "message": "网络请求错误,请稍后重试"};
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论