【发布时间】:2021-03-21 04:40:36
【问题描述】:
代码内容并不重要。当我想离开这个页面时,只有一个问题计时器无法处理。当我从这个页面离开时,sendMessage("message"); 函数继续运行。有没有办法处置这个计时器?
Timer timer;
@override
void initState() {
super.initState();
timer = Timer.periodic(new Duration(seconds: 5), (timer) async {
setState(() {
unicode++;
unicodeString = unicode.toString();
if (unicodeString.length < 6) {
int different = 6 - unicodeString.length;
for (var i = 0; i < different; i++) {
unicodeString = "0" + unicodeString;
}
}
sendMessage("meesage");
showSnackBarWithKey("Message Sended !");
});
});
}
@override
void dispose() {
timer.cancel();
super.dispose();
}
错误如下。
小部件库发现的异常 在最终确定小部件树时引发了以下断言: 'package:flutter/src/widgets/framework.dart':断言失败:第 4182 行 pos 12: '_debugLifecycleState != _ElementLifecycle.defunct':不正确。 要么断言表明框架本身有错误,要么我们应该提供实质性的 此错误消息中的更多信息可帮助您确定和修复根本原因。 无论哪种情况,请通过在 GitHub 上提交错误来报告此断言:
我使用了dispose timer,但它不能dispose timer。我无法解决这个问题。请帮忙。
【问题讨论】:
-
重要的是提供一个可以运行测试问题的最小完整可重现代码。
-
您确定没有多次创建周期性
Timer? -
是的,我确定,我只是在
initState();@jamesdlin 中创建了一个定期计时器 -
timer是实例变量还是全局变量?从您发布的代码中无法分辨。另外,请实际验证是否只创建了一个Timer,而不是依赖可能是错误的假设 -
什么时候我想离开这个页面。 - 你能提供更多关于你如何离开这个页面的信息吗?