如何在Flutter App中处理onPause / onResume?
我是Dart / Flutter的新手,并且想构建一个简单的应用,其中LinearProgressBar每秒更新一次。
无需过多了解实际代码,我可以进行以下设置。
- 根据经过的时间计算进度的函数。
- 一个显示进度的LinearProgressBar。
- 定期的Timer重新计算进度并每秒更新进度栏。
- 每次我都调试打印“ tick”,重新计算完成。
一切都按预期进行,只有一个例外。当我在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
接口来接收通知的 应用程序生命周期
的变化。
此页面中有示例代码
以上是 如何在Flutter App中处理onPause / onResume? 的全部内容, 来源链接: utcz.com/qa/429250.html