记录Flutter开发遇到的一个问题

52 阅读1分钟

Flutter中,安卓包通过编译工具运行到手机上一切正常,但是打出的release包安装到手机上会出现白屏,导致无法正常使用,如图所示。

image.png

通过查找,原因为: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());