import 'package:domain/constants/api_constants.dart'; import 'package:domain/repository/auth_repository.dart'; import 'package:domain/repository/job_repository.dart'; import 'package:domain/repository/labour_repository.dart'; import 'package:plugin_basic/basic_export.dart'; import 'package:plugin_basic/dio_interceptors/interceptor_auth_dio.dart'; import 'package:plugin_basic/dio_interceptors/interceptor_status_code_dio.dart'; import 'package:plugin_basic/service/user_service.dart'; import 'package:plugin_platform/http/http_provider.dart'; import 'package:shared/utils/log_utils.dart'; /* 全局服务 Service 的初始化入口 1. 默认注入网络请求Provider与Domain的Repository 2. 留下高阶函数的入口,方便加入其他的全局服务 全局单例服务的注入,在 main.dart 入口就可直接调用,注意手动调用 */ class GlobalServicesInjection { /// init static void init({void Function()? additionalDependencies}) { Log.d('----ConfigServicesInjection------start-----'); //全局单例的 HttpProvider 用于发起网络请求 Get.put( HttpProvider( ApiConstants.baseUrl, interceptors: [StatusCodeDioInterceptors(), AuthDioInterceptors()], //需要加上与App关联的一些拦截处理 ), permanent: true); //全局单例的用户数据仓库 Get.put(AuthRepository(httpProvider: Get.find())); //其他的数据仓库注入 Get.lazyPut(() => JobRepository(httpProvider: Get.find())); Get.lazyPut(() => LabourRepository(httpProvider: Get.find())); // 用户信息服务(用户信息相关业务类) Get.put(UserService(Get.find())); // 调用额外的依赖注入逻辑(如果提供了) if (additionalDependencies != null) { additionalDependencies(); } Log.d('----ConfigServicesInjection------end-----'); } // 切换应用的BaseUrl的逻辑 static void switchBaseUrl(String baseUrl) { Get.replace( HttpProvider( baseUrl, // 使用新的 baseUrl interceptors: [StatusCodeDioInterceptors(), AuthDioInterceptors()], ), ); } }