Flutter:当使用包装器时,如何使用Routes在页面之间进行路由



我正在构建一个具有多个页面的应用程序。问题是,我有很多Hero()小部件,我想在页面之间设置动画。我尝试使用动画包的PageTransitionSwitcher,但Hero()小部件无法使用它进行动画制作。我在MaterialApp()下面的树的根上有一个包装器,我路由到登录屏幕、验证屏幕和主屏幕。问题是,如果我在主屏幕上路由,它将替换包装器,所以我不得不让主屏幕是一个空容器,在它上面推送一条路由,这就是实际的主屏幕,每个主屏幕都有一个底部NavigationBar((,在Hero()的动画化时,它推送一个替换以使用渐变动画更改屏幕。

问题是,这种方法非常糟糕,我遇到了很多问题,因为我必须有一个空的小部件,它推送一个路由,然后在用户的身份验证状态更改时在包装器中弹出所有路由。我想知道是否有更好的方法可以做到这一点,或者有一种方法可以在不实际路由用户的情况下获得路由动画。

谢谢你的帮助!

编辑:我目前的方法不起作用,因为当用户更新个人资料时,它会随机弹出页面。我暂时恢复到PageTransitionSwitcher(),但我想知道如何在当前设置中使用导航器或使用导航器的动画。

这可以通过嵌套导航器来完成。在主页中返回Navigator()并添加HeroController()(请参阅此处的更多信息,英雄动画不在嵌套导航器中工作(应该可以实现我想要实现的目标。

您还需要给导航器一个键,并在Material App中指定一个navigatorKey,例如使用keyName.currentState!.push()进行路由。

最新更新