我是Dart / Flutter的新手,想建立一个简单的应用程序,其中LinearProgressBar每秒都会更新一次.
如果没有太多的实际代码,我有以下设置工作.
>基于传递时间计算进度的函数.
>显示进度的LinearProgressBar.
>定期计时器每秒重新计算进度并更新进度条.
>我每次都调试’tick’,重新计算完成.
一切都按预期工作,但有一个例外.当我在Android设备的后台移动应用程序时,’tick’会继续打印.
在原生Android上,当触发’onPause’事件时,我会取消我的定期计时器.
Flutter有类似的东西吗?我能找到的只是’initState’和’dispose’.但是,在将应用程序移动到背景时,不会调用Dispose.
我不希望计时器在后台继续滴答作响.
在我的研究中,我发现了这个Stack Overflow问题onresume-and-onpause-for-widgets-on-flutter.它的答案建议使用TickerProviderStateMixin.
我用下面的方法.
class _BarItemState extends State<BarItem> with SingleTickerProviderStateMixin { Ticker ticker; num progress = 1.0; @override void initState() { super.initState(); ticker = createTicker((duration) => setState(() { debugPrint('tick'); progress = duration.inSeconds / 30; })) ..start(); } // other stuff omitted }
它工作正常,但我仍然不满意.
原因是,现在每隔几毫秒而不是每秒一次调用自动收报机回调.在我看来,这似乎是浪费资源(我不需要流畅的动画),…我是否过于复杂的事情?
即使我的用例似乎不需要它,我仍然想知道:
如何自己处理onPause / onResume事件?