アプリの起動時に新しい画面を自動的にプッシュする必要があります(ユーザーがログインまたはサインアウトしている場合)。
私は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 回以上プッシュされます。
ナビゲーターが同じ画面を複数回押すのを止めるには?
ありがとう!