大年初三的时候 v1.12.13+hotfix.7 终于发布了,该版本发布后总算把 1.12.13
版本上的几个大坑填完,算是达到“能用”的稳定版本;同时 1 月 30 号官方也发布了 2020 Flutter
最新的路线计划,也算是新的一年“美好”的开始吧。
一、1.12.13+hotfix.7
v1.12.13+hotfix.7 版本主要在于解决了我比较关心的三个问题,包括: reportFullyDrawn
异常、华为手机上崩溃、光标和键盘输入异常 这几个问题。
1、华为手机上崩溃
相信这个问题是 1.12 版本国内开发者最头痛的,出现崩溃的华为手机会抛出 Skia
异常的问题:
Flutter engine crashes on some Android devices due to "Failed to setup Skia Gr context"
该问题的 issue 主要集中在 #47804 和 #47164 上,产生原因主要在于 skia 的兼容绘制上,感谢 yrom 同学在修复之前提供了如下的临时解决办法,而本次官方则是通过 #48733 回滚了 skia 来完成修复。
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);
2、键盘输入和光标
这类问题上 Flutter 其实跌过好几次跟头,从 PlatformView
的支持时就出现无法输入的问题,还有华为删除输入文本出现崩溃(怎么又是华为?)等等的异常,而这次主要是类似 #46159 :该问题主要是输入文本时键盘被冻结了,或者输入的内容消除了。
这次官方通过 #45698 和 engine/#14053 的 pr 修复了该问题,该问题主要和 TextAffinity
的使用有一定关系, TextAffinity
主要用于设置光标显示在输入文本前面还是后面,该异常算是“好心办了坏事”导致。
在 6b66d79 这个提交中官方增加了
Track and use fallback TextAffinity for null affinity platform TextSelections.
,而这个提交主要是增加了了默认的_fallbackAffinity
系列的逻辑,官方在本次 hotfix 上将该提交回滚了。
3、reportFullyDrawn
reportFullyDrawn
主要是 Android 上用提交应用初始化到 reportFullyDrawn
方法被调用的时间,该问题主要是版本兼容判断导致。
二、2020 路线计划
从 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 也可以看到明显的倾向。
资源推荐
- Github : https://github.com/CarGuo
- 开源 Flutter 完整项目:https://github.com/CarGuo/GSYGithubAppFlutter
- 开源 Flutter 多案例学习型项目: https://github.com/CarGuo/GSYFlutterDemo
- 开源 Fluttre 实战电子书项目:https://github.com/CarGuo/GSYFlutterBook
- 开源 React Native 项目:https://github.com/CarGuo/GSYGithubApp