歡迎您光臨本站 註冊首頁

昨日在上海舉辦的中國 Google 開發者大會(Google Developer Days China)上,Flutter 團隊在主題演講環節中發布了 Flutter 的最新穩定版本:Flutter 1.9。據稱,此版本是 Flutter 迄今為止最大的一次版本更新,有 100 多名 contributor 在此次開發周期中提交了超過 1500 個 PR。新增的功能和其他更新涵蓋了相當廣泛的範圍,從支持 macOS Catalina 和 iOS 13 到改進工具鏈,以及支持新的 Dart 語言特性和新的 Material 風格小部件。

在演講環節中,Flutter 團隊還宣布了一則關於 Flutter 對 web 支持的重要里程碑消息:開發團隊已成功將此前獨立的 Flutter for web 集成到 Flutter 的主倉庫中

Flutter for web 是 Flutter 的代碼兼容(code-compatible)實現版本,在 2019 年的谷歌 I/O 大會上,開發團隊發布了 Flutter for web 的首個技術預覽版,宣布 Flutter 正在為包括 Google Home Hub 在內的 Google 智能顯示平台提供支持,並通過結合 Chrome OS 為桌面級應用程序提供支持邁出第一步。

Flutter for web 使用基於標準的 Web 技術(HTML, CSS 和 JavaScript)進行渲染。通過 Flutter for web,可以將 Dart 編寫的 Flutter 代碼編譯成嵌入到瀏覽器並部署到任何 Web 伺服器的客戶端版本(client experience)。開發者可以使用 Flutter 的所有特性而無需瀏覽器插件。

現在 Flutter for web 集成至 Flutter 主倉庫則意味著開發者可使用同一套代碼庫編寫移動、桌面和 Web 應用。

下面簡單介紹一下 Flutter 1.9 的新特性。

Flutter on the web

正如前面所提到的,flutter_web 的 GitHub 倉庫現已被棄用,這個實現 Flutter 對 web 支持的倉庫已合併至 Flutter 的主倉庫中。亦即意味著,如果我們從 master 或 dev 分支獲取到最新版本的 Flutter,只需運行 flutter run -d chrome 命令即可使用最新的 Flutter 試驗版本來開發面向 Web 平台的應用。

當我們創建一個項目時,Flutter 現在會通過一個最小化的 web/index.html 文件來生成一個 web 運行引擎(web runner),其中 web/index.html 文件主要用於自舉 (bootstrap) 基於 web 編譯的 Flutter 代碼,有了此文件后,我們可使用 Flutter CLI 工具或 IDE 中的 Flutter 插件來編輯或運行面向 Web 平台開發的 Flutter 應用。

上圖是啟用了 Flutter web 支持的 VS Code 界面截圖。請注意 web/index.html 文件和頂部的下拉列表,可以看到這裡允許開發者選擇 Chrome 作為目標設備。儘管 Flutter 的 web 支持仍處於早期階段,但 Flutter 1.9 代表了使用 Flutter 為 Web 開發提供生產支持走出了重要的一步。

下面是兩個使用 Flutter 開發 Web 應用的案例:

Flutter Widget Livebook 使用 Flutter for web 構建,可展示在網頁上實時運行的小部件。

Panache 則是一個用於為 Flutter 創建主題的工具,開發者可以下載已創建的主題,然後直接添加到代碼中。

支持 macOS Catalina 和 iOS 13

蘋果將在近期推出了新版本的 macOS 操作系統 Catalina。為此,團隊付出了巨大努力,以確保 Flutter 做好升級準備,順利適配新平台。比如說,新版本進一步優化了端到端的工具體驗,保證 Flutter 工具能夠與 Xcode 妥善協作,助力開發者面向 Catalina 開發出優質應用,具體優化項包括:

  • 為新的 Xcode 構建系統提供支持

  • 全工具鏈啟用 64 位支持

  • 簡化平台依賴項

此外,隨著 iOS 13 即將面世,團隊也在積極推進相關的支持工作,以確保 Flutter 應用在新款 iPhone 設備上保持美觀的界面。Flutter 1.9 實現了 iOS 13 的拖曳式工具欄功能,允許長按與從右往左拖動兩項操作,並且為觸感反饋提供了支持。不少開發者提交的希望 Flutter 支持 iOS 夜間模式的 pull request 已被合併,團隊目前已開始著手解決這方面的需求,爭取儘早推出解決方案。

最後,新版本的開發構建允許我們啟用 Bitcode 實驗性支持。Bitcode 是蘋果新添加的一個編譯特性,開啟 Bitcode 功能后,開發者只需在編譯環節上傳與平台無關的 Intermediate Representation (中間文件) 即可。以 Bitcode 的形式上傳應用后,蘋果可以在後期直接對二進位文件進行優化,免除了開發者二次上傳的麻煩。與此同時,這也為 Flutter 開啟了更多的使用場景,比方說為 watchOS 和 tvOS 等要求上傳 Bitcode 文件的平台提供支持。

引入全新的 Material 風格小部件

Flutter 1.9 也對 Material 組件和特性進行了升級。作為一款全球頂尖的開源設計系統,Material 提供了豐富多彩、靈活易操作的視覺元素,助力開發者在多個平台實現高交互性的用戶體驗。

在 Flutter 1.9 中,開發團隊新添加了若干小部件,其中包括 ToggleButtons 和 ColorFiltered。

▲ ToggleButtons

▲ ColorFiltered

ToggleButtons widget 可將同一行的多個 ToggleButton widget 組合到一起,其中每個 widget 各自又由一組圖標和文本 widget 構成。通過這種組合,開發者將得到一組外觀與行為完全可自定義的按鈕。它能為您的應用按鈕實現更加多元化的設計 —— 不論是單選還是多選,選擇至少一個或是零個、尖角還是圓角、粗邊或細邊,圖標或文本 ——ToggleButtons widget 全都可以滿足。請查看 ToggleButtons 示例,了解以上需求的具體實現。

ColorFiltered widget 允許我們更改子 widget 樹的顏色,這與利用演算法 (部分演算法見上圖樣例) 給圖片重新上色差不多。該 widget 能夠幫助我們處理許多用例,例如: 向用戶提供更好的色彩無障礙服務等等。請查看 ColorFiltered 示例,了解該 widget 的工作細節。

國際化支持

新增了對南非語 (Afrikaans)、祖魯語 (Zulu) 等 24 種多國語言的支持。

Dart 2.5

在 Flutter 1.9 發布之際,Google 也推出了最新版本的 Dart 語言 —— Dart 2.5,內含預發布版本的 Dart: FFI (外部函數介面),它可用於實現 Dart 語言與 C 語言之間的互操作 (interop),以及由機器學習驅動的 IDE/編輯器代碼補全功能。更多技術細節,請閱讀後續發布的《Dart 2.5 發布說明》。

優化工具鏈

從 Flutter 1.9 開始,iOS 新項目默認使用 Swift 語言,而非 Objective-C;Android 新項目則默認使用 Kotlin,而非 Java。由於許多 Flutter package 使用 Swift 編寫,因此,一旦將 Swift 設置為默認語言后,開發者便無需再為啟用默認設置的應用手動添加包。Swift 5 實現了 ABI 穩定,而且蘋果在近期幾個系統版本中也為應用瘦身做了許多工作,因此 12.2 或更高版本的 iOS 系統將不再包含用於 Swift 的動態鏈接庫,從而大幅縮小了 Swift 應用的體積。

考慮到 Android Studio 新項目現在已經默認採用 Kotlin 作為開發語言了,因此,很自然地,Flutter 開發團隊把所有 Android 項目的默認語言統一為 Kotlin。flutter CLI 工具、IntelliJ/Android Studio 和 VS Code 插件均默認啟用這些選項,不過,如有需要,我們可隨時切換回之前的 Objective-C 或 Java 語言。

此外,開發團隊也在一直改善 Flutter 應用中的錯誤信息質量。優化之後,信息的可讀性、簡潔性和可操作性均有明顯提升。

參考:谷歌開發者 《Flutter 1.9 正式發布!| 全平台創新開發體驗》


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/109776/flutter-1-9-released
Flutter 1.9 穩定版發布:Flutter for web 合併至 Flutter 主倉庫、支持 macOS Catalina 和 iOS 13已經有151次圍觀

http://coctec.com/news/soft/show-post-214304.html