Asynchronous 颤振中的可靠/持续定时器

Asynchronous 颤振中的可靠/持续定时器,asynchronous,flutter,dart,timer,Asynchronous,Flutter,Dart,Timer,在我的应用程序中,它需要一个计时器,以便在计时器过期时异步启动新的UI屏幕 以下代码显示了所需的语义: Timer t=计时器(持续时间(秒:myDuration),(){ 问一个问题(‘你好吗?’);}); //也许以后,在计时器响之前。。。 t、 取消() 使用计时器,我的实现有时会工作,特别是在小的持续时间内 但是,如果持续时间很长,比如说25分钟或400分钟,那么我的应用程序将被终止并重新启动,然后计时器丢失,超时将永远不会发生 我的问题是,如何使计时器在应用程序重启后保持持久性,或使用

在我的应用程序中,它需要一个计时器,以便在计时器过期时异步启动新的UI屏幕 以下代码显示了所需的语义:

Timer t=计时器(持续时间(秒:myDuration),(){
问一个问题(‘你好吗?’);});
//也许以后,在计时器响之前。。。
t、 取消()

使用计时器,我的实现有时会工作,特别是在小的持续时间内

但是,如果持续时间很长,比如说25分钟或400分钟,那么我的应用程序将被终止并重新启动,然后计时器丢失,超时将永远不会发生

我的问题是,如何使计时器在应用程序重启后保持持久性,或使用某种等效机制使其可靠

我可以通过检查存储的时间值来提供一个临时的持久性解决方案,以便计时器在(重新)启动程序时过期,并决定是否重新启动计时器。但是我想知道是否已经有了一个通用的解决方案,因为这是Future.delayed操作在程序重启后生存的一般要求,否则,Future.delayed的使用是有限的


否则,我可能会寻找提供持久性的替代解决方案。我记得可能会有本地通知。

我认为,当应用程序启动时,您应该启动计时器,但您还需要在显示屏幕以缓存服务/首选项/db时写入时间。然后,如果您的应用程序被终止并再次启动,您将使用rest时间启动计时器(因为您需要每次启动时启动计时器,并且您知道rest是多少)

假设您应该每400分钟显示一次屏幕。好的,从现在开始是
DateTime.now()。添加(持续时间(分钟数:400))
,我们可以通过(伪代码)安全地从现在开始计时到现在,但想法应该很清楚

timeLeft = cachedDateTime - DateTime.now()
if(timeLeft<0){
show you page immediately and write to cache next time
}
else {
start timer with time left here
}
timeLeft=cachedDateTime-DateTime.now()

if(timeleftt)感谢您的建议。它可能会起作用。但我会了解计时器是否应该解决这个问题,因为它是一个具有Future.delayed操作的通用计时器。