我有一个“固定”的自定义应用栏小工具,位于我的Material App之外。我希望这个应用栏始终位于顶部,Widget视图可以更改。
我希望此应用栏小部件能够侦听MaterialApp中正在更新的路由并做出相应的反应。
我想我需要使用RouteObserver,但我很难让这个应用栏订阅任何路由事件。我已经尝试广播一个流来通知任何监听它的小部件,但是这会从initState生命周期钩子触发,所以只有一次被触发而在调用Navigator.pop时没有收到()
我试过这个https://docs.flutter.io/flutter/widgets/RouteObserver-class.html。
关于如何实现这一目标的任何想法?
答案 0 :(得分:0)
我不确定这是否是在MaterialApp外部处理Route的正确方法,但这就是我解决问题的方法。
我开始使用Fluro导航器https://github.com/goposse/fluro,它为我提供了一个更好的路径框架。
我现在有一个静态方法来处理Fluro路由,并将视图更改Stream事件广播到任何侦听我的新Application.doRoute(上下文,路径)的组件。
在Application.doRoute(..)中,我添加到我自己的自定义_history列表中,该列表具有每个新Route的上下文和路径。然后我可以调用另一个名为Application.doBack()的静态函数,然后弹出_history中的最后一项并再次广播视图更改流。
我现在可以拥有根显示列表级别窗口小部件对MaterialApp中的更改做出反应。
Navigator.pushNamed和Navigator.pop()现已替换为Application.doRoute()和Application.goBack()