flutter黑屏,从后台切换到前台经常黑屏,并且黑屏之后必须要重新切换一下前台后台才正常显示,这个我问题出现的频率很高。
之前按照百度的方法改启动页,没任何用。
后来想起我监听了app切换到前台的事件
initState(){
WidgetsBinding.instance?.addObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。
//关闭弹窗
if(isShowBox) Navigator.pop(context);
break;
case AppLifecycleState.resumed: //从后台切换前台,界面可见
parseWork();//临时注释,测试能否解决黑屏bug
break;
case AppLifecycleState.paused: // 界面不可见,后台
break;
case AppLifecycleState.detached: // APP结束时调用
break;
}
}
里面有个parseWork的工作,还挺耗时的,是一个async的异步函数。
于是注释掉,果然正常了。
因为异步函数也是在ui线程中执行,我们需要在子线程中执行,用compute
await compute(parseWork,1);
这样就没问题了,黑屏问题解决了。
网友评论