В моем приложении необходим таймер для асинхронного запуска нового экрана интерфейса пользователя по истечении таймера. Следующий код показывает желаемую семантику:
Timer t = Timer(Duration(seconds: myDuration), () {
askQuestion('How are you doing?'); });
// Maybe later, before the timer goes off...
t.cancel();
Используя Timer, моя реализация иногда работает, особенно с небольшой продолжительностью.
Но если длительность велика, скажем, 25 или 400 минут, мое приложение будет убито и перезапущено, тогда таймер будет потерян, таймаут никогда не произойдет.
Мой вопрос Как я могу сделать Timer постоянным после перезапуска приложения или надежным с помощью какого-то эквивалентного механизма?
Я могу предоставить однозначное c постоянное решение, проверив сохраненное значение времени для таймера, чтобы истечь при (пере) запуске моей программы, и решив, должен ли я перезапустить таймер. Но я хотел бы узнать, существует ли уже обобщенное решение c, поскольку для операции Future.delayed это общее требование, чтобы выдержать перезапуск программы, в противном случае использование Future.delayed ограничено.
В противном случае я мог бы искать альтернативные решения, обеспечивающие постоянство. Я помню местное уведомление мощи.