此版本是 Flutter 迄今為止最大的一次版本更新,有 100 多名 contributor 在此次開發(fā)周期中提交了超過 1500 個 PR贝室。新增的功能和其他更新涵蓋了相當廣泛的范圍谱俭,從支持 macOS Catalina 和 iOS 13 到改進工具鏈腿倚,以及支持新的 Dart 語言特性和新的 Material 風格小部件奖慌。
下面來簡單介紹一下 Flutter 1.9 的新特性。
Flutter on the web
flutter_web 的 GitHub 倉庫現(xiàn)已被棄用懂缕,這個實現(xiàn) Flutter 對 web 支持的倉庫已合并至 Flutter 的主倉庫中。亦即意味著王凑,如果我們從 master 或 dev 分支獲取到最新版本的 Flutter搪柑,只需運行 flutter run -d chrome 命令即可使用最新的 Flutter 版本來開發(fā)面向 Web 平臺的應(yīng)用。
下面是兩個使用 Flutter 開發(fā) Web 應(yīng)用的案例:
Flutter Widget Livebook 使用 Flutter for web 構(gòu)建索烹,可展示在網(wǎng)頁上實時運行的小部件工碾。
Panache 則是一個用于為 Flutter 創(chuàng)建主題的工具,開發(fā)者可以下載已創(chuàng)建的主題术荤,然后直接添加到代碼中倚喂。
支持 macOS Catalina 和 iOS 13
蘋果將在近期推出了新版本的 macOS 操作系統(tǒng) Catalina。為此,團隊付出了巨大努力端圈,以確保 Flutter 做好升級準備焦读,順利適配新平臺。比如說舱权,新版本進一步優(yōu)化了端到端的工具體驗矗晃,保證 Flutter 工具能夠與 Xcode 妥善協(xié)作,助力開發(fā)者面向 Catalina 開發(fā)出優(yōu)質(zhì)應(yīng)用宴倍,具體優(yōu)化項包括:
- 為新的 Xcode 構(gòu)建系統(tǒng)提供支持
- 全工具鏈啟用 64 位支持
- 簡化平臺依賴項
此外张症,隨著 iOS 13 即將面世,團隊也在積極推進相關(guān)的支持工作鸵贬,以確保 Flutter 應(yīng)用在新款 iPhone 設(shè)備上保持美觀的界面俗他。Flutter 1.9 實現(xiàn)了 iOS 13 的拖曳式工具欄功能,允許長按與從右往左拖動兩項操作阔逼,并且為觸感反饋提供了支持兆衅。不少開發(fā)者提交的希望 Flutter 支持 iOS 夜間模式的 pull request 已被合并,團隊目前已開始著手解決這方面的需求嗜浮,爭取盡早推出解決方案羡亩。
最后,新版本的開發(fā)構(gòu)建允許我們啟用 Bitcode 實驗性支持危融。Bitcode 是蘋果新添加的一個編譯特性畏铆,開啟 Bitcode 功能后,開發(fā)者只需在編譯環(huán)節(jié)上傳與平臺無關(guān)的 Intermediate Representation (中間文件) 即可吉殃。以 Bitcode 的形式上傳應(yīng)用后辞居,蘋果可以在后期直接對二進制文件進行優(yōu)化,免除了開發(fā)者二次上傳的麻煩寨腔。與此同時速侈,這也為 Flutter 開啟了更多的使用場景,比方說為 watchOS 和 tvOS 等要求上傳 Bitcode 文件的平臺提供支持迫卢。
引入全新的 Material 風格小部件
Flutter 1.9 也對 Material 組件和特性進行了升級倚搬。作為一款全球頂尖的開源設(shè)計系統(tǒng),Material 提供了豐富多彩乾蛤、靈活易操作的視覺元素每界,助力開發(fā)者在多個平臺實現(xiàn)高交互性的用戶體驗。
在 Flutter 1.9 中家卖,開發(fā)團隊新添加了若干小部件眨层,其中包括 ToggleButtons 和 ColorFiltered。
- ToggleButtons
- ColorFiltered
ToggleButtons widget 可將同一行的多個 ToggleButton widget 組合到一起上荡,其中每個 widget 各自又由一組圖標和文本 widget 構(gòu)成趴樱。通過這種組合馒闷,開發(fā)者將得到一組外觀與行為完全可自定義的按鈕。它能為您的應(yīng)用按鈕實現(xiàn)更加多元化的設(shè)計 —— 不論是單選還是多選叁征,選擇至少一個或是零個纳账、尖角還是圓角、粗邊或細邊捺疼,圖標或文本 ——ToggleButtons widget 全都可以滿足疏虫。請查看 ToggleButtons 示例,了解以上需求的具體實現(xiàn)啤呼。
ColorFiltered widget 允許我們更改子 widget 樹的顏色卧秘,這與利用算法 (部分算法見上圖樣例) 給圖片重新上色差不多。該 widget 能夠幫助我們處理許多用例官扣,例如: 向用戶提供更好的色彩無障礙服務(wù)等等翅敌。請查看 ColorFiltered 示例,了解該 widget 的工作細節(jié)惕蹄。
國際化支持
新增了對南非語 (Afrikaans)哼御、祖魯語 (Zulu) 等 24 種多國語言的支持。
Dart 2.5
在 Flutter 1.9 發(fā)布之際焊唬,Google 也推出了最新版本的 Dart 語言 —— Dart 2.5,內(nèi)含預(yù)發(fā)布版本的 Dart: FFI (外部函數(shù)接口)看靠,它可用于實現(xiàn) Dart 語言與 C 語言之間的互操作 (interop)赶促,以及由機器學(xué)習驅(qū)動的 IDE/編輯器代碼補全功能。
優(yōu)化工具鏈
從 Flutter 1.9 開始挟炬,iOS 新項目默認使用 Swift 語言鸥滨,而非 Objective-C;Android 新項目則默認使用 Kotlin谤祖,而非 Java婿滓。由于許多 Flutter package 使用 Swift 編寫,因此粥喜,一旦將 Swift 設(shè)置為默認語言后凸主,開發(fā)者便無需再為啟用默認設(shè)置的應(yīng)用手動添加包。Swift 5 實現(xiàn)了 ABI 穩(wěn)定额湘,而且蘋果在近期幾個系統(tǒng)版本中也為應(yīng)用瘦身做了許多工作卿吐,因此 12.2 或更高版本的 iOS 系統(tǒng)將不再包含用于 Swift 的動態(tài)鏈接庫,從而大幅縮小了 Swift 應(yīng)用的體積锋华。
考慮到 Android Studio 新項目現(xiàn)在已經(jīng)默認采用 Kotlin 作為開發(fā)語言了嗡官,因此,很自然地毯焕,F(xiàn)lutter 開發(fā)團隊把所有 Android 項目的默認語言統(tǒng)一為 Kotlin衍腥。flutter CLI 工具、IntelliJ/Android Studio 和 VS Code 插件均默認啟用這些選項,不過婆咸,如有需要竹捉,我們可隨時切換回之前的 Objective-C 或 Java 語言。
此外擅耽,開發(fā)團隊也在一直改善 Flutter 應(yīng)用中的錯誤信息質(zhì)量活孩。優(yōu)化之后,信息的可讀性乖仇、簡潔性和可操作性均有明顯提升憾儒。