大年初三的時候 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 : github.com/CarGuo
- 開源 Flutter 完整專案:github.com/CarGuo/GSYG…
- 開源 Flutter 多案例學習型專案: github.com/CarGuo/GSYF…
- 開源 Fluttre 實戰電子書專案:github.com/CarGuo/GSYF…
- 開源 React Native 專案:github.com/CarGuo/GSYG…