Навигатор нажимает один и тот же экран несколько раз - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно запускать новый экран автоматически при запуске приложения (если пользователь входит в систему или выходит из системы).

Я использую 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 раз.

Как остановить навигатор от одновременного нажатия одного и того же экрана?

Спасибо!

...