当我在flutter中创建子路由时,为什么会同时创建父页面?

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

我将 navigator 2.0 与 GoRouter 一起使用。我发现在小部件树中,当我转到子路由时,该路由的所有父路由也会被创建,并且它们的构建方法也会被触发。这是为什么?。当我实际返回时,不应该创建这些父页面吗?同样,当我推送新路线而不弹出旧路线时,以前的路线仍然存在于小部件树中。当旧页面甚至不可见时,将旧页面的状态保留在内存中,这不是浪费内存吗?

flutter flutter-navigation flutter-go-router flutter-beamer
1个回答
0
投票

在 Flutter 中,导航器的工作方式类似于堆栈。

后进先出

这意味着,最后进入的页面在弹出时会先出来。这样,当您将新页面推入堆栈时,新页面将位于旧页面的顶部并一直存在,直到您弹出。因此,当您弹出时,新页面将首先弹出并登陆到旧页面,因为它已经位于新页面下方。

这样,如果您不需要旧页面,则可以弹出旧页面 之后首先推送新页面。那么旧的页面就不再存在了 在新页面下,因为旧页面先弹出。

并且,对于 GoRouter 的说法, 它的工作原理是这样的,如果您将一个页面定义为另一个页面的子页面,那么当您调用该页面时,您必须通过其父页面。因为孩子总是要依赖父母的。

如果您孩子的页面可以在没有父母的情况下工作并且您必须调用它 分开,那么你应该在父级之外声明它

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