我在我的 initState
中运行 2 个计时器函数,代码如下:
@override
void initState() {
readingSavedData();
_timeString = _formatDateTime(DateTime.now());
Timer.periodic(Duration(seconds: 1), (Timer t) => _getTime());
Timer.periodic(Duration(seconds: 3), (Timer t) => gettingLocation());
super.initState();
像这样
_getTime()
函数正在运行setState()
在显示计时器的文本小部件上每 1 秒。当我使用
Navigator
离开页面时它永远不会停止的问题..它继续运行并在控制台中弹出此错误:Unhandled Exception: setState() called after dispose()
因为它不能调用
setSatate(){}
在不再可见的小部件上。如何避免这种情况。
最佳答案
基于@pskink 的回答,我使用这种方法解决了它:
Timer _clockTimer;
Timer _locationTimer;
@override
void initState() {
readingSavedData();
_timeString = _formatDateTime(DateTime.now());
_clockTimer = Timer.periodic(Duration(seconds: 1), (Timer t) => _getTime());
_locationTimer = Timer.periodic(Duration(seconds: 3), (Timer t) => gettingLocation());
super.initState();
}
@override
void dispose() {
_clockTimer.cancel();
_locationTimer.cancel();
super.dispose();
}
关于android - 离开页面时如何停止在 initState 中启动的 Timer.periodic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60170177/