Таймер флаттера сбрасывается при переключении страницы

В моем приложении Flutter есть таймер и страница настроек. Когда таймер работает, и я переключаюсь на страницу настроек (с помощью PageView), таймер сбрасывается или возникает ошибка (необработанное исключение: setState () вызывается после dispose()) Это происходит потому, что я использую setState для уменьшения времени .

          if (!mounted) return;
    setState(() {
      final seconds = duration.inSeconds - 1;

      if (seconds < 0) {
        isWork = !isWork;
        reset(autostartSession);
      } else {
        duration = Duration(seconds: seconds);
      }
    });
}

Таймер продолжает работать, если я выключу экран. Может кто-нибудь подскажет, как я могу переключать страницы, не сбрасывая таймер и не получая ошибки?

Кстати, я сам создал таймер и не использовал пакет.

      Widget buildTimer() {
    String twoDigits(int n) => n.toString().padLeft(2, '0');
    final minutes = twoDigits(duration.inMinutes.remainder(60));
    final seconds = twoDigits(duration.inSeconds.remainder(60));

    return Text('$minutes:$seconds', style: const TextStyle(fontSize: 80));
  }

1 ответ

Решение

Попробуйте перейти на страницу настроек таким образом, чтобы экран под ней не умер.

                        Navigator.push(
                          context,
                          MaterialPageRoute(
                            builder: (context) => SecondPage(),
                          ));
Другие вопросы по тегам