大多数时候,您不需要实施
NavigatorObserver。请参阅其他StackOverflow答案,以解释如何在路由之间使用
push和
pop传递信息。在你所描述的使用情况下,应
addListener给一个
AnimationController,使用
TickerProviderStateMixin以获得合适的
vsync对象。这样可以确保在应用暂停或
State处置后,您的回调不会触发。(代替
addListener,您可以使用
AnimatedBuilder或
AnimatedWidget回调的主要目的是重建窗口小部件树的一部分。)
您想要的主要时间
NavigatorObserver是使用的是FirebaseAnalytics这样的插件。您可以在插件repo中查看用法示例。您将参数
NavigatorObserverin
传递
navigatorObservers给
MaterialApp构造函数:
static FirebaseAnalyticsObserver observer = new FirebaseAnalyticsObserver(analytics: analytics);...return new MaterialApp( navigatorObservers: <NavigatorObserver>[observer], ...);
具有
State实现的是不寻常的,
NavigatorObserver因为您
MaterialApp应该位于小部件层次结构的顶部。在构造它的时候,大多数
State对象还不存在,因此很难将它们放入
navigatorObservers数组中。您可以改用不是的类
State。如有必要,您可以使用
GlobalKey<MyClassState>来查找
State需要通知的消息(但是,如果这样做,可能会有更简单的方法来完成所需的操作)。



