Мне нужно запускать новый экран автоматически при запуске приложения (если пользователь входит в систему или выходит из системы).
Я использую scoped_model
для аутентификации, поэтому необходимо перемещаться при изменении значения пользователя в модели.
Я следую предложению Брайана Игана здесь: https://github.com/brianegan/scoped_model/issues/43#issuecomment-442444143
class LoginScreenState extends State<LoginScreen> {
@override
void didChangeDependencies() {
ScopedModel.of<AuthModel>(context).addListener(_navigationListener);
super.didChangeDependencies();
}
@override
void dispose() {
ScopedModel.of<AuthModel>(context)
.removeListener(_navigationListener);
super.dispose();
}
void _navigationListener() {
switch (ScopedModel.of<AuthModel>(context).AuthStatus) {
case AuthStatus.NotAuth:
Navigator.of(context).pushNamed(‘/Login’);
break;
case AuthStatus.Auth:
Navigator.of(context).pushNamed(‘/Main’);
break;
case AuthStatus.Register:
Navigator.of(context).pushNamed(‘/Register’);
break;
}
AuthStatus
- Enum
.Я изменяю значение в Model
.
Это правильный маршрут, но есть проблема:
Один и тот же маршрут выполняется много раз.Например, одна и та же страница входа нажимается не менее 5 раз.
Как остановить навигатор от одновременного нажатия одного и того же экрана?
Спасибо!