Flutter 检测屏幕是否关闭

Ian*_*Ian 5 flutter

我目前正在编写一个应用程序,并记录一些信息(例如 GPS),即使屏幕关闭(即其屏幕在睡眠模式下超时)。

setState()经常执行更新小部件。

但是,如果屏幕处于睡眠/不活动状态,我不确定是否需要调用setState()或某些其他 cpu 密集型操作,并且通过不调用它可能会更好地节省电池?

所以,我想知道是否有任何方法可以检测屏幕是否关闭,从而不调用 setState..

例如在伪代码中

if( checkScreenIsOn() ) { setState((){...})}
Run Code Online (Sandbox Code Playgroud)

我不确定当屏幕关闭时是否会触发某些事件。另外,如果像 GPS 这样的东西,我想在屏幕关闭时正常记录(我当前正在使用侦听器),但不更新显示。GPS 是否会进入不同的模式,如果是这样,有什么方法可以阻止这种情况吗?

Mat*_*usz 5

StatefullWidget 有一个 Mounted 标志Mounted 属性

而不是if (checkScreenIsOn())仅仅做if (mounted) setState((){...})

如果你想知道屏幕状态,你必须使用 MethodChannel 与本机 api 进行通信,例如。https://pub.dartlang.org/packages/screen_state