gpt4 book ai didi

dart - 导航器多次推送同一个屏幕

转载 作者:行者123 更新时间:2023-12-03 03:05:27 26 4
gpt4 key购买 nike

我需要在应用程序启动时自动推送新屏幕(如果用户登录或退出)。

我正在使用 scoped_model对于身份验证,因此当用户值(value)在模型中发生变化时需要导航。

我在这里遵循 Brian Egan 的建议: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;

}
AuthStatusEnum .我更改了 Model 中的值.

这是正确的推送路线,但有问题:

同一条路线被多次推送。例如,同一个登录页面至少被推送 5 次。

如何阻止 Navigator 多次推送同一屏幕?

谢谢!

最佳答案

在 Brian Egan 的示例中,他在 _navigationListener 方法中进行了 bool 测试。他的评论是:

// This function will be run every time the model changes! We will use it to // check the navigate boolean. If it's set to true, we'll push a new screen! // // If not, we won't do anything.



因此,尽管调用了多少次方法,但需要在代码中使用类似的 bool 值仅导航一次。

关于dart - 导航器多次推送同一个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com