大年初三的时候 v1.12.13+hotfix.7 终于发布了,该版本发布后总算把 1.12.13
版本上的几个大坑填完,算是达到“能用”的稳定版本;同时 1 月 30 号官方也发布了 2020 Flutter
最新的路线计划,也算是新的一年“美好”的开始吧。git
v1.12.13+hotfix.7 版本主要在于解决了我比较关心的三个问题,包括: reportFullyDrawn
异常、华为手机上崩溃、光标和键盘输入异常 这几个问题。github
相信这个问题是 1.12 版本国内开发者最头痛的,出现崩溃的华为手机会抛出 Skia
异常的问题:浏览器
Flutter engine crashes on some Android devices due to "Failed to setup Skia Gr context"
bash
该问题的 issue 主要集中在 #47804 和 #47164 上,产生缘由主要在于 skia 的兼容绘制上,感谢 yrom 同窗在修复以前提供了以下的临时解决办法,而本次官方则是经过 #48733 回滚了 skia 来完成修复。post
FlutterMain.ensureInitializationComplete(context, new String[]{FlutterShellArgs.ARG_ENABLE_SOFTWARE_RENDERING});
复制代码
Or学习
Intent flutterActivity = ...; // build intent
flutterActivity.put(FlutterShellArgs.ARG_ENABLE_SOFTWARE_RENDERING, true);
startActivity(flutterActivity);
复制代码
这类问题上 Flutter 其实跌过好几回跟头,从 PlatformView
的支持时就出现没法输入的问题,还有华为删除输入文本出现崩溃(怎么又是华为?)等等的异常,而此次主要是相似 #46159 :该问题主要是输入文本时键盘被冻结了,或者输入的内容消除了。测试
此次官方经过 #45698 和 engine/#14053 的 pr 修复了该问题,该问题主要和 TextAffinity
的使用有必定关系, TextAffinity
主要用于设置光标显示在输入文本前面仍是后面,该异常算是“好心办了坏事”致使。ui
在 6b66d79 这个提交中官方增长了
Track and use fallback TextAffinity for null affinity platform TextSelections.
,而这个提交主要是增长了了默认的_fallbackAffinity
系列的逻辑,官方在本次 hotfix 上将该提交回滚了。google
reportFullyDrawn
主要是 Android 上用提交应用初始化到 reportFullyDrawn
方法被调用的时间,该问题主要是版本兼容判断致使。spa
从 2020 年 Flutter 公布的 Roadmap 能够看到在于提升稳定性的同时,重点会是在于 Web 与 macOS 上的推动。
在 2019 年 12 月 举行的 Flutter Interact 活动中, Flutter 的对 Web 的支持已发展到了 beta ,因此接下来 Flutter 打算重点推动这项工做,从而使得 Web 与 Android 和 iOS 可以处于平等应用地位。
同时 Flutter 今年也将继续努力,提升 Flutter 构建 macOS 桌面应用的可行性,Flutter 今年的目标是:应该可以 flutter create
和 flutter run
让程序能够在浏览器,macOS,Android,Fuchsia 和 iOS 上正常运行,并支持热重装、插件、测试和发布。
最后官方表示首先会确保 Material Design 的部件库在全部这些平台上都能正常运行,至于 Cupertino 控件在 PC 上的完美支持还不在 2020 的计划以内。
这些计划从官方的 milestones 也能够看到明显的倾向。