dio_util.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'package:dio/dio.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:fun_selfie_app/dio_util/dio_interceptors.dart';
  4. // import 'package:fun_selfie_app/dio_util/dio_method.dart';
  5. class DioUtil {
  6. static DioUtil? _instance;
  7. static Dio _dio = Dio();
  8. Dio get dio => _dio;
  9. DioUtil._internal() {
  10. _instance = this;
  11. _instance!._init();
  12. }
  13. factory DioUtil() => _instance ?? DioUtil._internal();
  14. static DioUtil? getInstance() {
  15. _instance ?? DioUtil._internal();
  16. return _instance;
  17. }
  18. /// 取消请求token
  19. final CancelToken _cancelToken = CancelToken();
  20. ///
  21. _init() {
  22. /// 初始化基本选项
  23. BaseOptions options = BaseOptions(
  24. baseUrl:
  25. "http://118.123.247.197:8080/jeecg-boot/", //"http://localhost:8080",
  26. connectTimeout: const Duration(seconds: 6), // 连接超时时间
  27. receiveTimeout: const Duration(seconds: 6)); // 响应超时时间
  28. /// 初始化dio
  29. _dio = Dio(options);
  30. /// 添加拦截器
  31. _dio.interceptors.add(DioInterceptors());
  32. }
  33. /// 开启日志打印
  34. void openLog() {
  35. _dio.interceptors.add(LogInterceptor(responseBody: true));
  36. }
  37. /// 请求类
  38. Future<T> request<T>(
  39. String path, {
  40. String method = 'get',
  41. Map<String, dynamic>? params,
  42. data,
  43. CancelToken? cancelToken,
  44. Options? options,
  45. ProgressCallback? onSendProgress,
  46. ProgressCallback? onReceiveProgress,
  47. }) async {
  48. options ??= Options(method: method);
  49. try {
  50. Response response;
  51. response = await _dio.request(path,
  52. data: data,
  53. queryParameters: params,
  54. cancelToken: cancelToken ?? _cancelToken,
  55. options: options,
  56. onSendProgress: onSendProgress,
  57. onReceiveProgress: onReceiveProgress);
  58. return response.data;
  59. } on DioException catch (e) {
  60. debugPrint(e.toString());
  61. rethrow;
  62. }
  63. }
  64. /// 取消网络请求
  65. void cancelRequests({CancelToken? token}) {
  66. token ?? _cancelToken.cancel("cancelled");
  67. }
  68. }