|
@@ -28,17 +28,17 @@ class DioClient {
|
|
|
receiveTimeout: 3000,
|
|
|
));
|
|
|
|
|
|
- // 仅在调试模式下添加日志拦截器
|
|
|
- assert(() {
|
|
|
- _dio.interceptors.add(LogInterceptor(
|
|
|
- request: true,
|
|
|
- requestBody: true,
|
|
|
- responseBody: true,
|
|
|
- error: true,
|
|
|
- logPrint: _logger.d, // 使用 Logger 插件打印日志
|
|
|
- ));
|
|
|
- return true;
|
|
|
- }());
|
|
|
+ // // 仅在调试模式下添加日志拦截器
|
|
|
+ // assert(() {
|
|
|
+ // _dio.interceptors.add(LogInterceptor(
|
|
|
+ // request: true,
|
|
|
+ // requestBody: true,
|
|
|
+ // responseBody: true,
|
|
|
+ // error: true,
|
|
|
+ // logPrint: _logger.d, // 使用 Logger 插件打印日志
|
|
|
+ // ));
|
|
|
+ // return true;
|
|
|
+ // }());
|
|
|
|
|
|
// 修改拦截器添加顺序
|
|
|
// 1. 先添加 Token 拦截器
|
|
@@ -154,8 +154,34 @@ class TokenInterceptor extends Interceptor {
|
|
|
|
|
|
// 创建新的dio实例来避免拦截器循环
|
|
|
final clonedDio = Dio()..options = _dio.options;
|
|
|
- final response = await clonedDio.fetch(options);
|
|
|
+ // 添加响应处理拦截器
|
|
|
+ clonedDio.interceptors.add(InterceptorsWrapper(
|
|
|
+ onResponse: (Response<dynamic> response, ResponseInterceptorHandler handler) async {
|
|
|
+ final responseData = response.data as Map<String, dynamic>;
|
|
|
+ if (responseData['ret'] == 1) {
|
|
|
+ handler.next(
|
|
|
+ Response<dynamic>(
|
|
|
+ data: responseData['data'],
|
|
|
+ headers: response.headers,
|
|
|
+ requestOptions: response.requestOptions,
|
|
|
+ statusCode: response.statusCode,
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ handler.reject(
|
|
|
+ DioError(
|
|
|
+ requestOptions: response.requestOptions,
|
|
|
+ error: AppException(
|
|
|
+ message: responseData['msg'] ?? 'Unknown Error',
|
|
|
+ statusCode: responseData['ret'] ?? -1
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ));
|
|
|
|
|
|
+ final response = await clonedDio.fetch(options);
|
|
|
_isRefreshing = false;
|
|
|
return handler.resolve(response);
|
|
|
}
|