import 'package:dio/dio.dart'; import 'package:pretty_dio_logger/pretty_dio_logger.dart'; import 'package:sino_med_cloud/core/constants/api_constants.dart'; import 'package:sino_med_cloud/core/network/interceptors/auth_interceptor.dart'; import 'package:sino_med_cloud/core/network/interceptors/error_interceptor.dart'; import 'package:sino_med_cloud/core/network/interceptors/log_interceptor.dart'; /// Dio 客户端 - 统一网络请求管理 class DioClient { static final Dio _dio = Dio( BaseOptions( baseUrl: ApiConstants.baseApiUrl, connectTimeout: Duration(seconds: ApiConstants.connectTimeout), receiveTimeout: Duration(seconds: ApiConstants.receiveTimeout), sendTimeout: Duration(seconds: ApiConstants.sendTimeout), headers: { ApiConstants.contentType: ApiConstants.applicationJson, }, ), ); static Dio get dio { // 确保拦截器只添加一次 if (_dio.interceptors.isEmpty) { _dio.interceptors.addAll([ AuthInterceptor(), // 认证拦截器(添加 Token) ErrorInterceptor(), // 错误拦截器(统一错误处理) PrettyDioLogger( // 日志拦截器(美化输出) requestHeader: true, requestBody: true, responseBody: true, responseHeader: false, error: true, compact: true, ), // 如果需要自定义日志,可以使用 LogInterceptor 替代 PrettyDioLogger // LogInterceptor(), ]); } return _dio; } /// 重置 Dio 实例(用于重新配置) static void reset() { _dio.interceptors.clear(); } }