| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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();
- }
- }
|