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包装器时“无法打开流:操作失败”