我是Dart / Flutter的新手,并且想构建一个简单的应用,其中LinearProgressBar每秒更新一次。
无需过多了解实际代码,我可以进行以下设置。
一切都按预期进行,只有一个例外。当我在Android设备上的后台移动应用程序时,“滴答声”会一直打印。
在本机Android上,当触发“ onPause”事件时,我将取消定期计时器。
Flutter中有类似的东西吗?我所能找到的只是“ initState”和“ dispose”。但是,将应用程序移至后台时,不会调用Dispose。
我不希望计时器一直在后台计时。
在我的研究中,我发现了关于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事件?
您可以覆盖didChangeAppLifecycleState的的WidgetBindingObserver接口来接收通知的 应用程序生命周期 的变化。
didChangeAppLifecycleState
WidgetBindingObserver
此页面中有示例代码