Flutter 使用MMKV踩坑(iOS release打包出现白屏)

  • 由于工程是Flutter+原生混合开发,并且进入APP的第一个页面(登录页面)就是Flutter页面
  • MMKV官方写法在main()函数里使用await初始化,为了保证即时初始化,然而await 会导致iOS12及以下的系统到登录页会卡死在白屏页(只有在release包下才会这样,原因未知)
  • 解决方法:把await去掉(由于第一个Flutter页面没有使用到MMKV,所以可以去掉await,如果有使用到去掉了await可能会引发未初始化就使用的问题)
//业务页面
void main() {
  runZoned(() async {//全局异常捕获
//    await KVStorage.init(); await 会导致iOS12及以下的系统到登录页会白屏
    KVStorage.init();
    runApp(MyApp());
    DataService.instance.registerEvent();
  }, onError: (error, stackTrace) async {
    if(error!=null && error.toString().isNotEmpty) {
      var errorDetail = FlutterErrorDetails(exception: error, stack: stackTrace)
          .toString();
      Logger.write(errorDetail);
      //回传给native上报error信息
      PlatformChannelManager.getMethodChannel().invokeMethod(Method.errorUpload,
          FlutterErrorDetails(exception: error, stack: stackTrace).toString());
    }
  });
}

你可能感兴趣的:(Flutter 使用MMKV踩坑(iOS release打包出现白屏))