Dart 小部件消失时如何取消正在运行的计时器()
在StatefulWidget中,我实现了一个Dart 小部件消失时如何取消正在运行的计时器(),dart,flutter,Dart,Flutter,在StatefulWidget中,我实现了一个deactivate()方法,该方法进行了一些清理 实际上,StatefulWidget定期轮询服务,并用新接收的数据重新加载自身。因此,它使用一个计时器(),它定期调用服务器轮询回调 调用deactivate()的方法很好。但在小部件的某些停用时,异步计时器()仍会触发最后一个事件并调用回调,而小部件部分停用 这是我的名字: Q:一般问题:如何取消一些异步计时器(),并确保它不再调用提供的回调。 或者:如何编写取消计时器()的代码,并在完成取消操作
deactivate()
方法,该方法进行了一些清理
实际上,StatefulWidget定期轮询服务,并用新接收的数据重新加载自身。因此,它使用一个计时器()
,它定期调用服务器轮询回调
调用deactivate()
的方法很好。但在小部件的某些停用时,异步计时器()
仍会触发最后一个事件并调用回调,而小部件部分停用
这是我的名字:
Q:一般问题:如何取消一些异步计时器()
,并确保它不再调用提供的回调。
或者:如何编写取消计时器()
的代码,并在完成取消操作后执行代码,这样计时器()的回调肯定不会被调用。在颤振中,他们在状态下使用overridedispose
:
@override
void dispose() {
_timeDilationTimer?.cancel();
super.dispose();
}
我不确定在StatefulWidget
内创建计时器是否正确。您可能需要参考gallery示例(和)。我必须在回调中显式地测试(null!=context),以确保与上下文相关的代码不会调用尚未存在的上下文。陛下
@override
void dispose() {
_timeDilationTimer?.cancel();
super.dispose();
}