【发布时间】:2017-09-11 23:32:08
【问题描述】:
我试图检测 navigator 何时执行基本操作(push 和 pop),我发现要实现的类这是NavigatorObserver 类,但我找不到关于它如何工作的示例。
我已经尝试过实现接口:
class MyClassState extends State<MyClass> with NavigatorObserver{
....
@override
void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
print('This is never get called');
}
@override
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
print('This is never get called');
}
}
我当然会打电话给Navigator.of(context).push(...);
但是覆盖方法永远不会被调用。
我怀疑与导航器的绑定丢失,但我不确定。
有什么建议吗?
提前致谢!
编辑:
我想我想做的事情很简单,但我不知道该怎么做。
我有一个 page A 推送 page B。
在页面 B我有一个 定期计时器,必须在那里(在 页面 B)。
我要做的就是在 页面 B 弹出(Android 上的后退按钮或应用程序栏中的后退按钮)时使用 timer.cancel() 取消计时器,因为当 page B 弹出,即使 page B 已经消失,计时器仍在执行。
- 我无法使用 Navigator.pop() 将计时器作为参数传递,因为我不处理后退按钮(应用栏中的后退按钮和 Android 后退按钮)。
编辑 2:
-我找到了解决问题的方法,我所做的就是取消计时器上的
@override
void dispose() {
timer.cancel();
super.dispose();
}
方法。但我不确定这是否是实现它的最佳方式。
注意:
使用此解决方法,如果我按下 Home 按钮或在 Android 上打开多任务,计时器仍会执行,当返回应用程序时,它会重新启动,但计时器仍会再次执行其代码。
【问题讨论】: