Dart 小部件消失时如何取消正在运行的计时器()

Dart 小部件消失时如何取消正在运行的计时器(),dart,flutter,Dart,Flutter,在StatefulWidget中,我实现了一个deactivate()方法,该方法进行了一些清理 实际上,StatefulWidget定期轮询服务,并用新接收的数据重新加载自身。因此,它使用一个计时器(),它定期调用服务器轮询回调 调用deactivate()的方法很好。但在小部件的某些停用时,异步计时器()仍会触发最后一个事件并调用回调,而小部件部分停用 这是我的名字: Q:一般问题:如何取消一些异步计时器(),并确保它不再调用提供的回调。 或者:如何编写取消计时器()的代码,并在完成取消操作

在StatefulWidget中,我实现了一个
deactivate()
方法,该方法进行了一些清理

实际上,StatefulWidget定期轮询服务,并用新接收的数据重新加载自身。因此,它使用一个
计时器()
,它定期调用服务器轮询回调

调用
deactivate()
的方法很好。但在小部件的某些停用时,异步
计时器()
仍会触发最后一个事件并调用回调,而小部件部分停用

这是我的名字:

Q:一般问题:如何取消一些异步
计时器()
,并确保它不再调用提供的回调。

或者:如何编写取消
计时器()
的代码,并在完成取消操作后执行代码,这样
计时器()的回调肯定不会被调用。

在颤振中,他们在
状态下使用override
dispose

@override
void dispose() {
  _timeDilationTimer?.cancel();
  super.dispose();
}

我不确定在
StatefulWidget
内创建
计时器是否正确。您可能需要参考gallery示例(和)。

我必须在回调中显式地测试(null!=context),以确保与上下文相关的代码不会调用尚未存在的上下文。陛下
@override
void dispose() {
  _timeDilationTimer?.cancel();
  super.dispose();
}