alroyso il y a 1 mois
Parent
commit
dc0bb4d44c
1 fichiers modifiés avec 38 ajouts et 12 suppressions
  1. 38 12
      lib/app/network/dio_client.dart

+ 38 - 12
lib/app/network/dio_client.dart

@@ -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);
             }