import 'package:core/services/environment.service.dart'; import 'package:core/services/service.base.dart'; import 'package:core/services/session.service.dart'; import 'package:core/utils/index.dart'; import 'package:platforms/modes/state.dart'; import 'package:platforms/modes/menu.dto.dart'; import 'package:platforms/proxy/index.dart'; class MenuStateService extends ServiceBase { MenuStateService(super.injector); final InternalStore _state = InternalStore(state: MenuState()); EnvironmentService get _environmentService => resolve(); SessionService get _sessionService => resolve(); MenuService get _menuService => resolve(); @override void onInit() { super.onInit(); _initState(); } void _initState() { _sessionService.getToken$() .listen((token) { _state.patch((state) => state.menus = []); if (token != null) { refreshState(); } }); } Future refreshState() async { var environment = _environmentService.getEnvironment(); var framework = environment.application.framework ?? 'abp-flutter'; var result = await _menuService.getCurrentUserMenuList(framework); _state.patch((state) => state.menus = result.items); } List getMyMenus() { return _state.state.menus; } Stream> getMyMenus$() { return _state.sliceState((state) => state.menus); } }