component_service_manager.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import 'package:router/componentRouter/profile_service.dart';
  3. import '../ext/router_provider_container.dart';
  4. import 'app_service.dart';
  5. import 'main_service.dart';
  6. class ComponentServiceManager {
  7. // 私有构造函数
  8. ComponentServiceManager._internal();
  9. // 单例实例
  10. static final ComponentServiceManager _instance = ComponentServiceManager._internal();
  11. factory ComponentServiceManager() {
  12. return _instance;
  13. }
  14. // 存储 `ServiceProvider` 的 Map
  15. final Map<Type, Provider> _serviceProviders = {};
  16. // 添加 `ServiceProvider` 的方法
  17. void addServiceProvider<T>(Provider<T> provider) {
  18. _serviceProviders[T] = provider;
  19. }
  20. // 获取 `MainService` 的方法
  21. MainService get mainService {
  22. final provider = _serviceProviders[MainService];
  23. if (provider == null) {
  24. throw Exception('Provider for MainService not found.');
  25. }
  26. return routerContainer.read(provider as Provider<MainService>);
  27. }
  28. AppService get appService {
  29. final provider = _serviceProviders[AppService];
  30. if (provider == null) {
  31. throw Exception('Provider for AppService not found.');
  32. }
  33. return routerContainer.read(provider as Provider<AppService>);
  34. }
  35. ProfileService get profileService {
  36. final provider = _serviceProviders[ProfileService];
  37. if (provider == null) {
  38. throw Exception('Provider for ProfileService not found.');
  39. }
  40. return routerContainer.read(provider as Provider<ProfileService>);
  41. }
  42. // 在这里可以继续添加其他具体的服务获取方法
  43. // OtherService get otherService {
  44. // final provider = _serviceProviders[OtherService];
  45. // if (provider == null) {
  46. // throw Exception('Provider for OtherService not found.');
  47. // }
  48. // return routerContainer.read(provider as Provider<OtherService>);
  49. // }
  50. }