import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:fun_selfie_app/dio_util/dio_interceptors.dart'; // import 'package:fun_selfie_app/dio_util/dio_method.dart'; class DioUtil { static DioUtil? _instance; static Dio _dio = Dio(); Dio get dio => _dio; DioUtil._internal() { _instance = this; _instance!._init(); } factory DioUtil() => _instance ?? DioUtil._internal(); static DioUtil? getInstance() { _instance ?? DioUtil._internal(); return _instance; } /// 取消请求token final CancelToken _cancelToken = CancelToken(); /// _init() { /// 初始化基本选项 BaseOptions options = BaseOptions( baseUrl: "http://118.123.247.197:8080/jeecg-boot/", //"http://localhost:8080", connectTimeout: const Duration(seconds: 6), // 连接超时时间 receiveTimeout: const Duration(seconds: 6)); // 响应超时时间 /// 初始化dio _dio = Dio(options); /// 添加拦截器 _dio.interceptors.add(DioInterceptors()); } /// 开启日志打印 void openLog() { _dio.interceptors.add(LogInterceptor(responseBody: true)); } /// 请求类 Future request( String path, { String method = 'get', Map? params, data, CancelToken? cancelToken, Options? options, ProgressCallback? onSendProgress, ProgressCallback? onReceiveProgress, }) async { options ??= Options(method: method); try { Response response; response = await _dio.request(path, data: data, queryParameters: params, cancelToken: cancelToken ?? _cancelToken, options: options, onSendProgress: onSendProgress, onReceiveProgress: onReceiveProgress); return response.data; } on DioException catch (e) { debugPrint(e.toString()); rethrow; } } /// 取消网络请求 void cancelRequests({CancelToken? token}) { token ?? _cancelToken.cancel("cancelled"); } }