Мой код ниже. Я пытаюсь закрыть этот таймер. таймер не мог закрыться. Что я могу сделать, чтобы закрыть этот таймер? Мне срочно нужна помощь.
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();
}
это дает эту ошибку ниже.
════════ Исключение, перехваченное библиотекой виджетов ═══════════════════════════════════ Было брошено следующее утверждение при доработке дерева виджетов: 'package:flutter/src/widgets/framework.dart': Неудачное утверждение: строка 4263 поз. 12: '_debugLifecycleState! = _ElementLifecycle.defunct': есть не правда.
Я обновляю свой список данных каждые 10 секунд. Реальная проблема, когда я хочу покинуть эту страницу, таймер не может закрыться. @RaviSinghLodhi
Я думаю, что проблема здесь: if (this.mounted) { setState (() { loadingHttp = false; }); }
Я решил эту проблему прямо сейчас. Раньше я использовал функцию удаления timerHttp.cancel()
. Эта функция была создана с ошибкой. эта ошибка повлияла на таймер, а таймер не остановился. Я изменил это функциональное место. Таймер остановился прямо сейчас. спасибо всем ответ. кстати это фигня проблема :) @akif , @RaviSinghLodhi
Как вы изменили место метода timerHttp.cancel? Где ты его добавил? Можете ли вы вставить новый код?
Я вставляю ниже эту ошибку вопроса. @акиф
эта функция disconnectFromServer();
создавала какую-то ошибку. И эта ошибка повлияла на таймер.
@override
void dispose() {
disconnectFromServer();
timerHttp.cancel();
super.dispose();
}
Я решил эту проблему, изменив это функциональное место. как это ниже.
@override
void dispose() {
timerHttp.cancel();
disconnectFromServer();
super.dispose();
}
Хорошо, сейчас нам нужно отключить метод From Server(). В следующий раз, если вы хотите получить принятый ответ, вам нужно добавить весь код, чтобы мы могли понять проблему. Удачи!
Не могли бы вы объяснить, что вы делаете? Например, почему вы вызываете API каждые 10 секунд?