Ahm*_*gdi 4 android ios dart flutter
我在我的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();
Run Code Online (Sandbox Code Playgroud)
因为此函数在显示计时器的文本小部件上每 1 秒_getTime()运行一次。setState()
当我使用 .. 离开页面时它永远不会停止的问题是Navigator它继续运行并在控制台中弹出此错误:
Unhandled Exception: setState() called after dispose()
Run Code Online (Sandbox Code Playgroud)
因为它无法调用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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5389 次 |
| 最近记录: |