在 Drawer 中正确的 Flutter 导航实践
Correct Flutter navigation practice in Drawer
关于从 Material 应用程序中可重复使用的抽屉在 Flutter 屏幕之间导航的快速问题。
我有一个抽屉,在 Screen1() 和 Screen2() 的列表中设置了两个导航选项,例如:
// Go to Screen 1
Navigator.push(context, MaterialPageRoute(
builder: (context) => Screen1()),
//
// Go to Screen 2
Navigator.push(context, MaterialPageRoute(
builder: (context) => Screen2()),
如果用户通过抽屉反复在 Screen1 和 Screen2 之间导航,是否会产生无效率且无穷无尽的屏幕堆栈?我的意图是更改每个屏幕上的抽屉 - 使用 Navigator.pop() 以便用户可以返回到另一个屏幕,但据我了解,Navigator.pop() 只会破坏抽屉本身 - 不是屏幕!
我觉得这有点奇怪。你会建议我在抽屉里做什么来保持效率?我可以编写 navigator pop 代码以跳出抽屉以弹出实际屏幕吗?
谢谢。
您可以使用 pushAndRemoveUntil:
Push the given route onto the navigator, and then remove all the
previous routes until the predicate returns true.
如果您想删除之前的所有路由,第二个参数 predicate
应该是这样的:(_) => false
。还有一个 named 变体。
您可以使用 pushReplacement 而不是 pushAndRemoveUnitl。用一个新的屏幕替换以前的屏幕,防止无休止的堆叠。
有用的话点个赞:)
关于从 Material 应用程序中可重复使用的抽屉在 Flutter 屏幕之间导航的快速问题。
我有一个抽屉,在 Screen1() 和 Screen2() 的列表中设置了两个导航选项,例如:
// Go to Screen 1
Navigator.push(context, MaterialPageRoute(
builder: (context) => Screen1()),
//
// Go to Screen 2
Navigator.push(context, MaterialPageRoute(
builder: (context) => Screen2()),
如果用户通过抽屉反复在 Screen1 和 Screen2 之间导航,是否会产生无效率且无穷无尽的屏幕堆栈?我的意图是更改每个屏幕上的抽屉 - 使用 Navigator.pop() 以便用户可以返回到另一个屏幕,但据我了解,Navigator.pop() 只会破坏抽屉本身 - 不是屏幕!
我觉得这有点奇怪。你会建议我在抽屉里做什么来保持效率?我可以编写 navigator pop 代码以跳出抽屉以弹出实际屏幕吗?
谢谢。
您可以使用 pushAndRemoveUntil:
Push the given route onto the navigator, and then remove all the previous routes until the predicate returns true.
如果您想删除之前的所有路由,第二个参数 predicate
应该是这样的:(_) => false
。还有一个 named 变体。
您可以使用 pushReplacement 而不是 pushAndRemoveUnitl。用一个新的屏幕替换以前的屏幕,防止无休止的堆叠。 有用的话点个赞:)