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());
    }
  });
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容