我正在尝试使用命名路线在不同的屏幕之间导航。
我正在定义一个根路由(您可以将其称为后备路由(?)),一些其他路由和一个initialRoute,它们链接到与根路由不同的屏幕。
小部件树似乎也加载了根路由。但为什么?
TicketsScreen具有许多小部件,我不希望事先加载它们。
顺便说一句:这只是一个例子。当有多个路由时,它仍然会加载上述两个路由。
最佳答案
这是因为/tasks
具有领先的/
。
导航系统会推送所有内容,请让我解释一下。
如果您有路线:
/
/tasks
/tasks/new
导航至
/tasks/new
将同时推送所有三个。如果要保留“单一”路线,则应使用顶级限定符。在您的情况下,这将从
/
中删除/tasks
。例如,这种机制可用于 push 路径并避免出现奇怪的爆裂声,例如,
您可以通过快捷方式(而不是
/tasks/new
)导航到/tasks
,然后弹出。跳到起点好吗?如果从新任务弹出会转到任务页面会更好吗?我想这是对导航器尝试执行的操作的简要说明。
关于flutter - 根路由和不同的initialRoute创建奇怪的WidgetTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58733056/