Flutter中,安卓包通过编译工具运行到手机上一切正常,但是打出的release包安装到手机上会出现白屏,导致无法正常使用,如图所示。
通过查找,原因为:Flutter为加快应用启动速度,未等size赋值,就开始渲染界面。
可以通过下面的方法临时解决
if(window.physicalSize.isEmpty){
print("window size is zero");
window.onMetricsChanged = (){
//在回调中,size仍然有可能是0
if(!window.physicalSize.isEmpty){
window.onMetricsChanged = null;
print("window onMetricsChanged,run app");
runApp(const MyApp());
}
};
} else{
//如果size非0,则直接runApp
print("window load success,run app");
runApp(const MyApp());
}
不过 window 被废弃了,也可以在runApp之前添加一个延迟
sleep(Duration(milliseconds: 1000));
runApp(const MyApp());