当屏幕关闭时,仅某些Dart代码运行。当手机屏幕关闭时,Flutter会做什么?它会停止渲染但仍运行特定的Dart代码吗?
就我而言,即使屏幕关闭,也会调用Dart回调函数(传递给Flutter插件)。我想自定义/控制这种行为,因为我正在运行的计算成本很高的代码,当用户看不到输出时不应运行。屏幕关闭时,我已经可以运行代码了(例如通过使用screen_state flutter插件或使用Miguel Ruivo提供的ScreenStateObserver
,但它有局限性。我无法使用{{1}来弹出路线) }。我还想大致了解一下屏幕关闭时Flutter的影响。
答案 0 :(得分:0)
您想看看WidgetsBindingObserver mixin,因为它将为您的小部件状态提供不同的应用程序生命周期。
然后,您想在initState()
上订阅
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
并删除dispose()
上的监听器
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
并访问didChangeAppLifecycleState()
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
print('app resumed');
break;
case AppLifecycleState.inactive:
print('app inactive');
break;
case AppLifecycleState.paused:
print('app paused');
break;
case AppLifecycleState.detached:
print('app deatched');
break;
}
}