Flutter 运行release包卡住 或随机白屏不显示内容

卡住或白屏原因:

Flutter为加快应用启动速度,未等size赋值,就开始渲染界面。

解决办法:

监听window的尺寸变化,当不为空时,再runApp;runApp必须先WidgetsFlutterBinding.ensureInitialized(),确保有WidgetsFlutterBinding实例,不然会黑屏

Future<void> main() async {
 
  //如果size是0,则设置回调,在回调中runApp
  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");
        runMyApp();
      }
    };
  } else{
    //如果size非0,则直接runApp
    print("window load success,run app");
    runMyApp();
  }
}
 
void runMyApp() async{
 
  print("window:  ${window.physicalSize.width}  ${window.physicalSize.height}");
  //需确保加载完成,才runApp
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

使用window需导入 dart:ui

import 'dart:ui';

使用命令行,可获得更多日志

flutter run --release --verbose

参考:Flutter在 release版本,打开后随机白屏不显示内容_flutter release 白屏-CSDN博客

要打 Flutter 应用的发布版本(release),可以按照以下步骤进行操作: 1. 在终端或命令提示符中,进入 Flutter 项目的根目录。 2. 运行以下命令,以生成签名密钥(如果已经有签名密钥可以跳过此步骤): ``` keytool -genkey -v -keystore <keystore_name>.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <alias_name> ``` `<keystore_name>` 是生成的密钥库文件名,`<alias_name>` 是密钥别名。按照提示输入密码、姓名等信息即可生成密钥库文件。 3. 在 Flutter 项目的根目录下创建一个名为 `key.properties` 的文件,并在文件中添加以下内容: ``` storePassword=<keystore_password> keyPassword=<key_password> keyAlias=<alias_name> storeFile=<keystore_path> ``` `<keystore_password>` 是密钥库的密码,`<key_password>` 是密钥的密码,`<alias_name>` 是密钥别名,`<keystore_path>` 是密钥库文件的路径。 4. 打开 `android/app/build.gradle` 文件,在 android.defaultConfig 块中添加如下代码: ``` signingConfigs { release { // 这里的 signingConfig 填写你的签名配置 // 如果没有签名配置可以在这里使用默认配置 } } ``` 5. 在同一个 `build.gradle` 文件中,找到 `buildTypes` 部分,在 `release` 块中添加如下代码: ``` signingConfig signingConfigs.release ``` 6. 在终端或命令提示符中,运行以下命令来生成发布版本的 APK 文件: ``` flutter build apk --release ``` 运行完成后,将会在 `build/app/outputs/apk/release/` 目录下生成一个名为 `app-release.apk` 的 APK 文件。 现在,你已经成功地打Flutter 应用的发布版本(release)。你可以将生成的 APK 文件安装到 Android 设备上进行测试或发布到应用商店。请注意,对于 iOS 平台,你需要使用 Xcode 来打发布版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值