Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在离开页面抖动时停止在initState内启动的Timer.periodic_Android_Ios_Flutter_Dart - Fatal编程技术网

Android 如何在离开页面抖动时停止在initState内启动的Timer.periodic

Android 如何在离开页面抖动时停止在initState内启动的Timer.periodic,android,ios,flutter,dart,Android,Ios,Flutter,Dart,我在我的initState函数中运行了两个计时器,下面是代码: @覆盖 void initState(){ 读取saveddata(); _timeString=_formatDateTime(DateTime.now()); Timer.periodic(持续时间(秒:1),(Timer t)=>\u getTime()); Timer.periodic(持续时间(秒:3),(Timer t)=>gettingLocation()); super.initState(); 由于此\u get

我在我的
initState
函数中运行了两个计时器,下面是代码:

@覆盖
void initState(){
读取saveddata();
_timeString=_formatDateTime(DateTime.now());
Timer.periodic(持续时间(秒:1),(Timer t)=>\u getTime());
Timer.periodic(持续时间(秒:3),(Timer t)=>gettingLocation());
super.initState();
由于此
\u getTime()
函数在显示计时器的文本小部件上每1秒运行一次
setState()

当我使用
Navigator
离开页面时,它从未停止。它一直在运行,并在控制台中弹出此错误:

Unhandled Exception: setState() called after dispose()

由于它无法在不再可见的小部件上调用
setstate(){}
。如何避免这种情况。

基于@pskink answer,我使用以下方法解决了此问题:

Timer\u clockTimer;
定时器位置定时器;
@凌驾
void initState(){
读取saveddata();
_timeString=_formatDateTime(DateTime.now());
_clockTimer=Timer.periodic(持续时间(秒:1),(Timer t)=>\u getTime());
_locationTimer=Timer.periodic(持续时间(秒:3),(计时器t)=>gettingLocation());
super.initState();
}
@凌驾
无效处置(){
_clockTimer.cancel();
_locationTimer.cancel();
super.dispose();
}

通过调用
cancel()
内的
dispose()
?@pskink cancel在计时器上或在页面本身上,如果您能给我更多信息,我是一个新的flift用户。我的意思是
cancel()
在您的
计时器上