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

Posted

技术标签:

【中文标题】Flutter:使用包装器时如何使用Routes在页面之间进行路由【英文标题】:Flutter: How to use Routes to route between pages when using a wrapper 【发布时间】:2021-08-09 08:38:57 【问题描述】:

我正在构建一个包含多个页面的应用。问题是我有很多 Hero() 小部件,我想在页面之间制作动画。我尝试使用动画包的PageTransitionSwitcher,但Hero() 小部件不使用它制作动画。我在MaterialApp() 下方的树根处有一个包装器,我路由到登录屏幕、验证屏幕和主屏幕。问题是,如果我在主屏幕上进行路由,它将替换包装器,所以我不得不让主屏幕成为一个空容器,在其上方推送一条路由,这些路由是实际的主屏幕,每个都有一个 bottomNavigationBar() 推送一个替换以在 Hero()s 动画时使用淡入淡出动画更改屏幕。

问题是这种方法很笨拙,我遇到了很多问题,因为我必须有一个空的小部件来推送一个路由,然后当用户的身份验证状态发生变化时弹出包装器中的所有路由。我想知道是否有更好的方法来做到这一点,或者在不实际路由用户的情况下获取路由动画。

感谢您的帮助!

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

【问题讨论】:

【参考方案1】:

这可以通过嵌套导航器来完成。在主页返回Navigator() 并添加HeroController()(在此处查看更多信息Hero Animation not working inside nested Navigator)应该可以实现我想要实现的目标。

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

【讨论】:

以上是关于Flutter:使用包装器时如何使用Routes在页面之间进行路由的主要内容,如果未能解决你的问题,请参考以下文章

BadParametersError:使用 OVH Python 包装器时签名无效

应用 jwt auth 包装器时,Flask-cors 包装器不起作用。

当我在 macOS 上使用 py++ 生成 boost.Python 包装器时,出现关于 std::string 的错误?

使用带有file_get_contents的FTP URL包装器时“无法打开流:操作失败”

为啥在比较 Java 中的整数包装器时 128==128 为假但 127==127 为真?

如何使 a:hover 与内容包装器一起使用?