Таймер флаттера сбрасывается при переключении страницы
В моем приложении 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(),
));