如何在不重新创建窗口小部件的情况下重新渲染窗口小部件-flutter / dart

时间:2020-07-18 12:37:34

标签: flutter dart

在下面的代码中。 CountdownTimer有两个(黄色和红色),当条件发生变化时,显示屏上显示的CountdownTimer小部件将发生变化,即从黄色切换为红色,反之亦然。

但是,当它切换时,CountdownTimer会“重新初始化”。 例如,假设黄色的初始计时器为60秒,勾选40秒后,还剩下20秒。此时,条件发生了两次更改,例如5秒钟,因此CountdownTimer切换为红色,然后又变为黄色。而不是从15秒开始运行计时器,而是从60秒重新开始。如何阻止小部件的这种“重新初始化”,并且不管条件如何,都允许计时器在后台独立进行?

此外,为了使这个问题更容易理解,我使用了经过修改的代码版本。因此,在实际代码中,我不能使用变量来存储endTime的值。因此,将需要另一版本的答案。

本质上,我需要一种方法来使CountdownTimer都在后台保持活动状态,而不会使垃圾回收器删除它。

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),
                  ),

感谢您抽出宝贵的时间阅读本文章。

1 个答案:

答案 0 :(得分:1)