我正在构建一个 flutter 应用程序,我有一个主页,但它也有一个登录和注销页面。
因此,如果您尚未登录,主页将替换为登录页面。我应该使用pushAndRemoveUntil,这样登录的用户就无法按回到登录页面吗?反之亦然,如果他们已注销,我是否应该使用 PushAndRemoveUntil 以便您无法返回登录页面?我检查会话以确保用户登录,因此主页将无法工作,但很好奇什么是最好的方法。很好奇这是不是锤子和手术刀的问题,但我不确定哪个是哪个。
pushAndRemoveUntil 用于删除路由,直到某个条件成立,通常,如果删除过程到达逻辑中指定的路由: 删除unti:route.name =“/ home” 如果条件始终返回 true,它将从堆栈中删除所有路由,换句话说,推送路由后面的所有路由。
PopScope 只是在用户尝试从导航堆栈返回/弹出路线时创建一些有意的行为。 PopScope 可用于完全限制弹出路由。
因此,您有某些场景:
总而言之:您需要同时利用两者。
登录时:pushAndRemoveUntil
注销时:pushAndRemoveUntil
登录页面时:PopScope(限制弹出)
pushAndRemoveUntil
是关于推送新路线并从导航堆栈中清除其他路线
按下 popScope
后退按钮(通过 Android 硬件按钮或应用程序栏中的后退按钮)以请求 confirmation
或 prevent
应用程序从导航堆栈中弹出当前路线。
您可以将
pushAndRemoveUntil
与popScope
一起使用来防止用户弹出路线,因为在使用pushAndRemoveUntil
后尝试弹出可能会导致黑屏。