在下面的代码中。有两个CountdownTimer(黄色和红色),并且当条件发生变化时,显示屏上显示的CountdownTimer小部件将发生变化,即从黄色切换为红色,反之亦然。
但是,切换时,CountdownTimer会“重新初始化”。
例如,假设黄色的初始计时器为60秒,勾选40秒后,还剩下20秒。此时,条件发生了两次更改,例如5秒钟,因此CountdownTimer切换为红色,然后又变为黄色。而不是从15秒开始运行计时器,而是从60秒重新开始。如何防止小部件的这种“重新初始化”,并且不管条件如何,允许计时器在后台独立进行?
另外,为了使这个问题更容易理解,我使用了经过修改的代码。因此,在实际代码中,我不能使用变量来存储endTime的值。因此,将需要另一个版本的答案。
从本质上讲,我需要一种方法来使CountdownTimer在后台保持 Activity 状态,而不会因删除该计数而造成困惑的垃圾收集。
condition ? CountdownTimer( // yellow
endTime: DateTime.now().millisecondsSinceEpoch + 200000,
textStyle: TextStyle(fontSize: 50, color: Colors.yellow),
)
: CountdownTimer( // red
endTime: DateTime.now().millisecondsSinceEpoch + 1000,
textStyle: TextStyle(fontSize: 50, color: Colors.red),
),
感谢您抽出时间来阅读。
最佳答案
您是否不能一直都拥有两个计时器,而只是根据情况更改可见性?
另请参阅:
https://stackoverflow.com/questions/44489804/show-hide-widgets-in-flutter-programmatically#:~:text=Flutter%20now%20contains%20a%20Visibility,gone%20and%20a%20lot%20more。
关于flutter - 如何在不重新创建小部件的情况下重新渲染小部件-Flutter/Dart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62968668/