Флаттер: таймер не может остановиться

Мой код ниже. Я пытаюсь закрыть этот таймер. таймер не мог закрыться. Что я могу сделать, чтобы закрыть этот таймер? Мне срочно нужна помощь.

      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 pos 12: '_debugLifecycleState != _ElementLifecycle.defunct': неверно.

1 ответ

эта функция disconnectFromServer();создавал какую-то ошибку. И эта ошибка повлияла на таймер.

      @override
void dispose() {
   disconnectFromServer();
   timerHttp.cancel();
   super.dispose();
}

Я решил эту проблему, изменив это функциональное место. как это ниже.

      @override
void dispose() {
   timerHttp.cancel();
   disconnectFromServer();
   super.dispose();
}
Другие вопросы по тегам