如何在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

回到顶部