2

アプリの起動時に新しい画面を自動的にプッシュする必要があります(ユーザーがログインまたはサインアウトしている場合)。

私は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 回以上プッシュされます。

ナビゲーターが同じ画面を複数回押すのを止めるには?

ありがとう!

4

1 に答える 1