- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我是 Dart/Flutter 的新手,想构建一个简单的应用程序,其中 LinearProgressBar 每秒更新一次。
无需过多了解实际代码,我就可以进行以下设置。
一切都按预期工作,但有一个异常(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/
我是一名优秀的程序员,十分优秀!