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

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

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': есть не правда.

Не могли бы вы объяснить, что вы делаете? Например, почему вы вызываете API каждые 10 секунд?

Ravi Singh Lodhi 15.12.2020 07:00

Я обновляю свой список данных каждые 10 секунд. Реальная проблема, когда я хочу покинуть эту страницу, таймер не может закрыться. @RaviSinghLodhi

SefaUn 15.12.2020 07:02

Я думаю, что проблема здесь: if (this.mounted) { setState (() { loadingHttp = false; }); }

Akif 15.12.2020 07:11

Я решил эту проблему прямо сейчас. Раньше я использовал функцию удаления timerHttp.cancel(). Эта функция была создана с ошибкой. эта ошибка повлияла на таймер, а таймер не остановился. Я изменил это функциональное место. Таймер остановился прямо сейчас. спасибо всем ответ. кстати это фигня проблема :) @akif , @RaviSinghLodhi

SefaUn 15.12.2020 07:17

Как вы изменили место метода timerHttp.cancel? Где ты его добавил? Можете ли вы вставить новый код?

Akif 15.12.2020 07:24

Я вставляю ниже эту ошибку вопроса. @акиф

SefaUn 15.12.2020 07:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
866
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Хорошо, сейчас нам нужно отключить метод From Server(). В следующий раз, если вы хотите получить принятый ответ, вам нужно добавить весь код, чтобы мы могли понять проблему. Удачи!

Akif 15.12.2020 07:31

Другие вопросы по теме