Flutter:定时器无法停止
Flutter: Timer can not stop
我的代码如下。我试着关闭这个计时器。计时器无法关闭。我该怎么做才能关闭这个计时器?我需要立即帮助。
Timer timerHttp;
@override
void initState() {
timerHttp = Timer.periodic(new Duration(seconds: 10), (timerHttp) async {
print("girdi yine asdadasd");
final response = await http.get(
"http://xxxxxxxxxxxxxxxxxxxxxxxxx",
);
if (response.statusCode == 200) {
setState(() {
var responseJson = json.decode(response.body);
cm100Datas = responseJson;
saat = [];
l1voltState = [];
l2voltState = [];
l3voltState = [];
l1akimState = [];
l2akimState = [];
l3akimState = [];
for (var item in cm100Datas) {
saat.add(saatFormat.parse(item["saat"]));
l1voltState.add(double.parse(item["l1volt"]));
l2voltState.add(double.parse(item["l2volt"]));
l3voltState.add(double.parse(item["l3volt"]));
l1akimState.add(double.parse(item["l1akim"]));
l2akimState.add(double.parse(item["l2akim"]));
l3akimState.add(double.parse(item["l3akim"]));
}
});
if (this.mounted) {
setState(() {
loadingHttp = false;
});
}
}
});
super.initState();
}
@override
void dispose() {
timerHttp.cancel();
super.dispose();
}
它给出了以下错误。
════════ Exception caught by widgets library
═══════════════════════════════════ The following assertion was thrown
while finalizing the widget tree:
'package:flutter/src/widgets/framework.dart': Failed assertion: line
4263 pos 12: '_debugLifecycleState != _ElementLifecycle.defunct': is
not true.
此函数 disconnectFromServer();
产生了一些错误。该错误影响了计时器。
@override
void dispose() {
disconnectFromServer();
timerHttp.cancel();
super.dispose();
}
我通过更改这个函数位置解决了这个问题。像下面这样。
@override
void dispose() {
timerHttp.cancel();
disconnectFromServer();
super.dispose();
}
我的代码如下。我试着关闭这个计时器。计时器无法关闭。我该怎么做才能关闭这个计时器?我需要立即帮助。
Timer timerHttp;
@override
void initState() {
timerHttp = Timer.periodic(new Duration(seconds: 10), (timerHttp) async {
print("girdi yine asdadasd");
final response = await http.get(
"http://xxxxxxxxxxxxxxxxxxxxxxxxx",
);
if (response.statusCode == 200) {
setState(() {
var responseJson = json.decode(response.body);
cm100Datas = responseJson;
saat = [];
l1voltState = [];
l2voltState = [];
l3voltState = [];
l1akimState = [];
l2akimState = [];
l3akimState = [];
for (var item in cm100Datas) {
saat.add(saatFormat.parse(item["saat"]));
l1voltState.add(double.parse(item["l1volt"]));
l2voltState.add(double.parse(item["l2volt"]));
l3voltState.add(double.parse(item["l3volt"]));
l1akimState.add(double.parse(item["l1akim"]));
l2akimState.add(double.parse(item["l2akim"]));
l3akimState.add(double.parse(item["l3akim"]));
}
});
if (this.mounted) {
setState(() {
loadingHttp = false;
});
}
}
});
super.initState();
}
@override
void dispose() {
timerHttp.cancel();
super.dispose();
}
它给出了以下错误。
════════ Exception caught by widgets library ═══════════════════════════════════ The following assertion was thrown while finalizing the widget tree: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 4263 pos 12: '_debugLifecycleState != _ElementLifecycle.defunct': is not true.
此函数 disconnectFromServer();
产生了一些错误。该错误影响了计时器。
@override
void dispose() {
disconnectFromServer();
timerHttp.cancel();
super.dispose();
}
我通过更改这个函数位置解决了这个问题。像下面这样。
@override
void dispose() {
timerHttp.cancel();
disconnectFromServer();
super.dispose();
}