gpt4 book ai didi

android - 离开页面时如何停止在 initState 中启动的 Timer.periodic

转载 作者:行者123 更新时间:2023-12-01 16:01:20 25 4
gpt4 key购买 nike

我在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com