如何检测应用程序在颤动中何时被最小化



有没有办法检测应用程序何时最小化?简单地将WidgetsBindingObserverpaused事件一起使用是行不通的,因为它与用户关闭屏幕/手机锁时无法区分。注意,我需要这两个工作的android和ios。

我正在做的事情的一些背景。在应用程序中,我正在运行一个计时器。如果用户最小化应用程序(例如,使用手机做其他事情(,我想停止此计时器。但是,如果用户关闭屏幕/锁定屏幕,我希望计时器继续。

我建议看一下这个包:is_lock_screen

如描述所示

用于确定应用程序是由于锁定屏幕还是离开应用程序而进入后台。

我会试试这个:

@override
void didChangeAppLifecycleState(AppLifecycleState state) async {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.inactive) {
final isLock = await isLockScreen();
if(!isLock){
print('app inactive MINIMIZED!');
}
print('app inactive in lock screen!');
} else if (state == AppLifecycleState.resumed) {
print('app resumed');
}
}

如果您不想导入任何库,上述解决方案也很好。

你只需要在初始屏幕中observe你的WidgetBinding并听它

在初始屏幕中包含抽象类WidgetsBindingObserver,如启动屏幕:

class _SplashState extends State<Splash> with WidgetsBindingObserver {

initState中实现Observer到Observer应用程序状态:

@override
void initState() {
WidgetsBinding.instance.addObserver(this);
super.initState();
}

然后通过这种方法最终跟踪应用程序的生命周期

void didChangeAppLifecycleState(AppLifecycleState state) async {
switch (state) {
case AppLifecycleState.resumed:
print('Back to app');
break;
case AppLifecycleState.paused:
print('App minimised or Screen locked');
break;
}
}

相关内容

  • 没有找到相关文章

最新更新