使用GoRouter,有没有一种方法可以用不同的参数推送完全相同的路由,并使页面重新加载?我正在考虑类似Navigator的东西。pushReplacement
我正在使用context.go('/my_page/?param={someID}')推送到MyPage(一个有状态的小部件)
最初推送到该路径的操作正常,我加载了特定ID的页面
我尝试使用context.go('/my_page/?param={differentID}')再次推送同一路由(替换路由并使用不同的ID重新加载)。我的断点命中GoRoute pageBuilder中的return语句,并且我还命中MyPage.build中的断点。在构建中执行断点时,我看到传入此小部件的新ID。
但是页面没有可视地重建(或者中断initState --旁注,init state用于加载带有传入ID的几个腕尺--页面是有状态的小部件吗?)
物料页面上的维护状态为假。而且,推送不同的路线也可以正常工作。
这是一个有状态的小部件问题(意味着重新定位我所有的cubit init调用)?或者有不同的方法来推送相同的路由?
编辑__________
这个问题是特定于重建同一条路线的,但我正在处理的更大的问题是在维护导航堆栈的同时,无限地反复钻取同一个页面。
我使用一个状态管理器保存一个路线列表,并使用context.go()完全替换当前路线来触发导航。
有没有一种方法可以动态嵌套路由context.push(),同时保持整个导航栈?
2条答案
按热度按时间wr98u20j1#
经过一番研究,我注意到可以通过在GoRoute()的定义中使用
pageKey: UniqueKey()
来重定向到同一页面。我的项目中的示例代码:
hgqdbh6s2#
我认为
context.replace
可以完成您要做的事情,因为它应该替换当前堆栈上的内容。