юзера (логи пасс), передает на сервер, оттуда приходит дата истечения лицензии и булево - истекла или нет
Если все ок - перекидывет на Home
GoRouter
redirect: (BuildContext context, GoRouterState state) {
bool loggedIn = injector<AuthBloc>().state is AuthSuccessState;
bool isLoginPage = state.matchedLocation == RouteConstants.loginPath;
if (!loggedIn) {
return isLoginPage ? null : RouteConstants.loginPath;
})
if (loggedIn) {
return RouteConstants.homePath;
}
, где HomeBloc уже получает нужные данные
вопрос, как правильно при работе с HomeBloc проверять при каждом запросе, не истекла ли лицензия
и, если истекла, кидать обратно на страницу Auth?
У GoRouter есть refreshListenable, можно из репы который знает о состоянии авторизации прокинуть туда стрим и он по твоему редиректу должен перекидывать на логин
Да, он у меня слушает аутблок Я не понимаю как в хомблоке правильно вызвать аутблок с евентом для разлогивания
Блок из блока не надо вызывать, муветон Лучше на ui через листнеры либо через репы по стримам
то есть такой вариант внутри HomeBloc не очень? injector<AuthBloc>().add(const AuthLogoutEvent()); через репы по стримам может есть ссылка на пример, как это реализовать?
Такой вариант очень не очень. По примеру надо поискать что в открытом доступе есть Но суть в том что есть AuthRepository и в нем стрим authState на который подписан роутер и все в апке кто должен про этот стейт знать. Из HomeBloc ты можешь обратиться к методу репы по изменению этого стейта.
пока так написал listener: (context, homeState) { // Auth error if (homeState is HomeAuthErrorState) { injector<AuthBloc>().add(const AuthInitialEvent()); } работает, гляну для разнообразия как на стримах Спасибо
Тут можно через контекст просто обратиться, если у тебя блок в дереве виджетов
не знаю как это сделать - погуглю тут вопрос возник по гетит injector.registerFactory<HomeBloc>( или registerSingleton сейчас registerSingleton и, когда срабатывает if (homeState is HomeAuthErrorState) { injector<AuthBloc>().add(const AuthInitialEvent()); } работает редирект на аутСкрин потом я возобновляю лицензию, пробую зайти снова и мне выдает, что хомБлок закрыт This error message is related to a Flutter package called provider, which is used for state management. The error message indicates that there's an issue with the usage of the HomeBloc and suggests that it cannot add new events after calling close. тут я немного запутался
Не используй гет ит, если не знаешь для чего он, а тем более, не суй бизнес логику в сервис локатор
Как тогда его изучить не используя?) На своём пет проекте и хочу разобраться
Для начала надо изучить, для чего он вообще используется P.s. Не для бизнес логики точно)
Обсуждают сегодня