global_services_injection.dart 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:domain/constants/api_constants.dart';
  2. import 'package:domain/repository/auth_repository.dart';
  3. import 'package:domain/repository/job_repository.dart';
  4. import 'package:domain/repository/job_sg_repository.dart';
  5. import 'package:domain/repository/labour_repository.dart';
  6. import 'package:domain/repository/labour_sg_repository.dart';
  7. import 'package:domain/repository/ms_repository.dart';
  8. import 'package:domain/repository/other_repository.dart';
  9. import 'package:domain/repository/uk_attendance_repository.dart';
  10. import 'package:domain/repository/uk_job_repository.dart';
  11. import 'package:domain/repository/uk_report_repository.dart';
  12. import 'package:domain/repository/uk_review_repository.dart';
  13. import 'package:domain/repository/sg_agency_repository.dart';
  14. import 'package:plugin_basic/basic_export.dart';
  15. import 'package:plugin_basic/dio_interceptors/interceptor_auth_dio.dart';
  16. import 'package:plugin_basic/dio_interceptors/interceptor_status_code_dio.dart';
  17. import 'package:plugin_basic/service/http_provider_injection.dart';
  18. import 'package:plugin_basic/service/user_service.dart';
  19. import 'package:plugin_platform/http/http_provider.dart';
  20. import 'package:shared/utils/log_utils.dart';
  21. /*
  22. 全局服务 Service 的初始化入口
  23. 1. 默认注入网络请求Provider与Domain的Repository
  24. 2. 留下高阶函数的入口,方便加入其他的全局服务
  25. 全局单例服务的注入,在 main.dart 入口就可直接调用,注意手动调用
  26. */
  27. class GlobalServicesInjection {
  28. /// init
  29. static void init({void Function()? additionalDependencies}) {
  30. Log.d('----ConfigServicesInjection------start-----');
  31. //全局单例的 HttpProvider 用于发起网络请求 (根据不同的选择国家注入不同的域名)
  32. HttpProviderInjection.putHttpProviderByCountry();
  33. //全局单例的用户数据仓库
  34. Get.put(AuthRepository(httpProvider: Get.find()));
  35. //全局单例用户信息服务(用户信息相关业务类)
  36. Get.put(UserService(Get.find()));
  37. //各模块的数据仓库注入
  38. Get.lazyPut(() => JobRepository(httpProvider: Get.find()));
  39. Get.lazyPut(() => JobSGRepository(httpProvider: Get.find()));
  40. Get.lazyPut(() => LabourRepository(httpProvider: Get.find()));
  41. Get.lazyPut(() => LabourSGRepository(httpProvider: Get.find()));
  42. Get.lazyPut(() => OtherRepository(httpProvider: Get.find()));
  43. Get.lazyPut(() => SGAgencyRepository(httpProvider: Get.find()));
  44. //UK的数据仓库注入
  45. Get.lazyPut(() => UKJobRepository(httpProvider: Get.find()));
  46. Get.lazyPut(() => UKAttendanceRepository(httpProvider: Get.find()));
  47. Get.lazyPut(() => UKReviewRepository(httpProvider: Get.find()));
  48. Get.lazyPut(() => UKReportRepository(httpProvider: Get.find()));
  49. //MS/NL的数据仓库注入
  50. Get.lazyPut(() => MSRepository(httpProvider: Get.find()));
  51. // 调用额外的依赖注入逻辑(如果提供了)
  52. if (additionalDependencies != null) {
  53. additionalDependencies();
  54. }
  55. Log.d('----ConfigServicesInjection------end-----');
  56. }
  57. }