Flutter 1.12 最新 hotfix 与 2020 路线计划

8,990 阅读3分钟

大年初三的时候 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该问题主要是输入文本时键盘被冻结了,或者输入的内容消除了。

这次官方通过 #45698engine/#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 createflutter run 让程序可以在浏览器,macOS,Android,Fuchsia 和 iOS 上正常运行,并支持热重装、插件、测试和发布。

最后官方表示首先会确保 Material Design 的部件库在所有这些平台上都能正常运行,至于 Cupertino 控件在 PC 上的完美支持还不在 2020 的计划之内。

这些计划从官方的 milestones 也可以看到明显的倾向。

资源推荐