popScope 和pushAndRemoveUntil 有什么区别

问题描述 投票:0回答:2

我正在构建一个 flutter 应用程序,我有一个主页,但它也有一个登录和注销页面。

因此,如果您尚未登录,主页将替换为登录页面。我应该使用pushAndRemoveUntil,这样登录的用户就无法按回到登录页面吗?反之亦然,如果他们已注销,我是否应该使用 PushAndRemoveUntil 以便您无法返回登录页面?我检查会话以确保用户登录,因此主页将无法工作,但很好奇什么是最好的方法。很好奇这是不是锤子和手术刀的问题,但我不确定哪个是哪个。

flutter
2个回答
0
投票

pushAndRemoveUntil 用于删除路由,直到某个条件成立,通常,如果删除过程到达逻辑中指定的路由: 删除unti:route.name =“/ home” 如果条件始终返回 true,它将从堆栈中删除所有路由,换句话说,推送路由后面的所有路由。

PopScope 只是在用户尝试从导航堆栈返回/弹出路线时创建一些有意的行为。 PopScope 可用于完全限制弹出路由。

因此,您有某些场景:

  1. 当用户登录时,您需要推送并删除后面的所有内容,包括登录页面。
  2. 当用户位于登录页面时,您可能会将 PopScope 作为冗余限制,让用户无法返回,如果您在用户注销时不删除所有路由,则可能会发生这种情况。
  3. 当用户注销时,更好的做法是从堆栈中删除所有路由并将用户推送到登录页面。您也可以,只需将用户推送到登录页面,保留所有其他路线并使用 PopScope 的条件限制导航回来。但最好是同时使用两者,因此,当用户注销时,使用 pushAndRmoveUntil 删除所有路由。为了安全起见,只需在登录页面上使用 PopScope 来进行冗余限制即可。

总而言之:您需要同时利用两者。

登录时:pushAndRemoveUntil

注销时:pushAndRemoveUntil

登录页面时:PopScope(限制弹出)


0
投票

pushAndRemoveUntil
是关于推送新路线并从导航堆栈中清除其他路线

按下

popScope
后退按钮(通过 Android 硬件按钮或应用程序栏中的后退按钮)以请求
confirmation
prevent
应用程序从导航堆栈中弹出当前路线。

您可以将

pushAndRemoveUntil
popScope
一起使用来防止用户弹出路线,因为在使用
pushAndRemoveUntil
后尝试弹出可能会导致黑屏。

了解有关pushAndRemoveUntil的更多信息

了解有关 Pop 范围的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.