gpt4 book ai didi

android - 如何在 Flutter App 中处理 onPause/onResume?

转载 作者:IT老高 更新时间:2023-10-28 12:30:42 26 4
gpt4 key购买 nike

我是 Dart/Flutter 的新手,想构建一个简单的应用程序,其中 LinearProgressBar 每秒更新一次。

无需过多了解实际代码,我就可以进行以下设置。

  • 根据耗时计算进度的函数。
  • 显示进度的 LinearProgressBar。
  • 周期性计时器重新计算进度并每秒更新进度条。
  • 我每次都调试打印'tick',重新计算完成。

一切都按预期工作,但有一个异常(exception)。当我在我的 Android 设备的后台移动应用程序时,会不断打印“勾号”。

在原生 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

}

它正在工作,但我仍然不满意。

原因是,ticker 回调现在每隔几毫秒调用一次,而不是每秒调用一次。在我看来,这似乎是在浪费资源(我不需要流畅的动画),......我是不是把事情复杂化了?

即使我的用例似乎不需要它,我仍然想知道:

如何自行处理 onPause/onResume 事件?

最佳答案

您可以覆盖 WidgetBindingObserver 接口(interface)的 didChangeAppLifecycleState 以接收 应用生命周期 更改的通知。

this page 中有示例代码

关于android - 如何在 Flutter App 中处理 onPause/onResume?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com