0%

【文章翻譯】Major steps this year on the journey to multiplatform development

【文章內容使用 Gemini 1.5 Pro 自動產生】

今年邁向跨平台開發的重要里程碑

今天,我們很高興宣布兩個新的 SDK 版本——Dart 3.2 和 Flutter 3.16——以及 Flutter 休閒遊戲工具包的重大更新。

Flutter 3.16

Flutter 和 Dart 的價值主張

在今年年初肯亞內羅畢舉行的 Flutter Forward 上,我們介紹了 Flutter 和 Dart 的新路線圖。兩份路線圖都側重於四個高級主題:突破性圖形體驗、與 Web 和行動平台的無縫整合、早期採用新興架構,以及持續關注開發者體驗。

Flutter Forward 的四個高級主題

在 5 月份的 Google I/O 上,我們 宣布 我們在實現這一願景方面取得了重大進展,包括(但不限於)改進 iOS 上的渲染效能(使用 Impeller),支援 Web 上的元素嵌入,以及完成 Dart 3 中 100% 空安全之旅。

隨著我們接近年終,以下是自那以來的進展更新。

使用 Flutter 和 Dart 提供使用者價值

隨著每個新功能、改進或錯誤修復,整體目標保持不變:提供強大的語言和框架配對,讓您能夠建立美麗、豐富且快速的應用程式。您可以從單一的共享程式碼庫進行開發,為行動、Web 和桌面上面的應用程式使用者提供服務,而無需碎片化您的產品路線圖。我們也致力於開源,沒有授權成本,並致力於開發由開放性和協作驅動的豐富生態系統。

這個目標繼續引起 Google 內部和全球 Flutter 廣泛生態系統中開發者的共鳴。今年發佈了許多使用 Flutter 建立的 Google 應用程式:

  • 正如我們在 Flutter Forward 上宣布的那樣,Google Classroom 團隊在其行動應用程式中使用 Flutter,這些應用程式現在已在 iOS 上推出,並且在 Android 上處於 Beta 測試階段。他們正在看到由新的 Impeller 渲染引擎驅動的 顯著效能提升
  • YouTube Create 是一款由 Google 發佈的全新 Flutter 應用程式,它在 8 個國家/地區中提供 Beta 測試。此應用程式利用 Flutter Widget 函式庫的靈活性,提供完整的影片編輯體驗,包括濾鏡、效果以及音樂和配音編輯。
  • 使用Flutter驅動的 Google Earth 10 版本,使用者可以輕鬆地建立、協作和組織地圖和地理空間資料,不僅可以在 Web 上使用,還可以在 Android 和 iOS 行動裝置和平板電腦上使用!查看 Google Earth 發文 以獲取有關新設計的更多詳細資訊,並繼續關注我們將在未來的部落格文章中詳細介紹 Earth 團隊如何使用 Flutter 構建他們的應用程式。
Classroom(左)、YouTube Create(中)和 Google Earth(右)的螢幕截圖

Flutter 的採用也持續在 Google 之外、全球範圍內增長:

  • 今年發佈的應用程式包括瑞典的 Skandia 和波蘭的 Credit Agricole 等銀行應用程式,美國的 MarketWatch 虛擬股票交易所投資教育應用程式,荷蘭的 CZ 健康保險應用程式,以及加拿大的 Kijiji 分類廣告市場應用程式。一個共同的主題是,這些團隊選擇 Flutter 來實現 Android 和 iOS 之間一致的功能集,同時仍然提供豐富且引人入勝的 UI 體驗。
  • 繼續朝東前進,騰訊發佈了 Cloud Chat,這是一款豐富的全新聊天 SDK 和 UI 函式庫,目前在中國的聊天服務市場排名第一,並且正在擴展到國際市場。
  • 在巴西,SOMA 時尚集團啟動了其 Farm 品牌的重大數位更新,並在此過程中意識到 Flutter 的靈活性讓他們能夠將其擴展到該集團的其他品牌。在美國,Caribou Coffee 將 Flutter 與 Firebase 結合,以加速其生產力,而 Lucid Motors 報告稱,Flutter 不僅讓他們可以使用一個小型團隊交付兩個行動應用程式,而且 Flutter 的 Web 支援還讓他們能夠在內部分享原型。

我們很高興見證這些應用程式的演變。繼續閱讀,了解我們在核心框架中取得的持續進展。

突破性圖形效能

我們堅信,多平台開發不應意味著開發者或終端使用者體驗的下降。因此,我們竭盡全力實現這一願景。在 Flutter Forward 上,我們推出了 Impeller 引擎,這是對圖形渲染架構的全面重新設計和重新實作,旨在提高速度和效能。在 Flutter 3.10 中,我們宣布 Impeller 在 iOS 上預設啟用。今天,在 Flutter 3.16 中,我們很高興地分享,Impeller 在 Android 上已準備好在 stable channel 上接受預覽回饋。效能在一整年都得到了顯著提升;與一年前相比,在 Flutter Gallery 基準測試中測量的光柵化效能大約是使用 Impeller 在 Vulkan 上的效能的兩倍。有關如何啟用 Impeller 的詳細信息,請參閱 Flutter 3.16 發文

Flutter Gallery 基準測試顯示,過去一年中使用 Impeller 在 Vulkan 上的效能提高了 2 倍以上

休閒遊戲工具包

特別受益於快速且強大的圖形渲染的應用程式類別是遊戲。在 2022 年,我們發佈了最初的 Flutter 休閒遊戲工具包。今天,我們宣布重大更新,其中包括從紙牌遊戲到跑酷遊戲的全新模板選項,以及針對排行榜、變現和遙測等主題的一組遊戲服務開發者資源。有關更多詳細信息,請查看 休閒遊戲工具包部落格發文

一個動畫 GIF,顯示了在行動裝置、Web 和桌面設備上運行的多款基於 Flutter 的遊戲,例如 Trivia Crack、Debertz 和 Landover。

無縫整合

雖然 Flutter 應用程式通常在不同平台間具有非常高的共享程式碼比例(許多開發者報告共享比例為 95-99%),但我們仍然認為支援平台特定功能非常重要。在 iOS 上,應用程式擴展 提供了一種方式,讓使用者可以從手機上的其他應用程式中與應用程式的縮小版本進行互動。在我們上一個穩定版本中,我們發佈了 新資源 來幫助您為 Flutter 應用程式構建主畫面和鎖定螢幕 Widget。在 Flutter 3.16 中,我們加入了對使用 Flutter 渲染 某些 iOS 應用程式擴展的 UI 的支援,例如 共享擴展。Android 14 推出了新的 預測式返回手勢,它讓使用者可以在使用返回手勢(向左滑動)時瞥見應用程式背後的系統 UI。Flutter 3.16 支援此手勢。

持續關注開發者體驗

現代裝置具有各種外形尺寸(例如手機、摺疊式手機和平板電腦),這些裝置具有各種螢幕尺寸,並支援外部輸入裝置,例如鍵盤和滑鼠。為了確保您的使用者擁有良好的使用者體驗,考慮這些因素非常重要。我們最近與 Android 團隊合作,加入了對其 大型螢幕指南 的支援。我們已經發佈了 在加入大型螢幕支援方面的經驗,更新了我們的參考應用程式 Wonderous 以支援多種螢幕尺寸,並在 Flutter 框架中進行了一些修復,以更好地支援鍵盤、滑鼠和觸控板輸入。新的 API 讓您可以確定顯示器的尺寸和像素比率,並支援多視窗渲染。

在一年中,我們一直致力於完成對 Material 3 的支援,這是 Material Design 設計系統的最新版本。Flutter 的 Material Widget 現在完全支援 Material 3,並且在 Flutter 3.16 中,Material 3 現在是預設樣式。我們發現 Material 為應用程式增添了煥然一新的外觀;新的配色方案既美觀又符合無障礙的對比度要求。若要獲得實際體驗,請查看 Material 3 圖庫

Material 3 演示的螢幕截圖

開發者工具的兩個重大改進包括 VS Code 的新側邊欄和對 DevTools 中添加擴展的支援。側邊欄可以輕鬆發現核心 Flutter 工具操作,例如建立新專案、調用熱重裝、打開 DevTools 或選擇目標設備。DevTools 擴展提供了一個框架,讓您可以建立新的自定義工具,這些工具可以插入 DevTools,並提供額外的框架特定功能。ProviderPatrolServerPod 是開發 DevTools 擴展的幾個框架範例。

Serverpod 框架的 DevTools 擴展的螢幕截圖

我們重新啟動了 Flutter Favorite 程式,並將 flameflutter_animateflutter_rust_bridgeriverpodvideo_playermacos_uifpdart 指定為新的 Flutter Favorite。在 8 月份,我們為套件生態系統舉辦了首次虛擬峰會,超過 50 位非 Google 員工和 Google 員工貢獻者參加了 pub.dev 的峰會。

我們還見證了幾個強大的新套件和 Plugin 的到來。我最喜歡的幾個是 camera Plugin 中的 CameraX 支援,高效能的 2D 可捲軸 TableView 以及 flutterflow_ui 套件,它允許設計師和開發者使用拖放功能建立 UI 組件,然後將它們導出到 Flutter Widget 程式碼(演示影片)。此外,google_maps 套件現在支援 雲地圖樣式,因此開發者可以從 Google Cloud Console 中更新他們的樣式,而 home_widget 套件現在支援建立 互動式 iOS 主畫面 Widget

新興架構

Dart 互操作性

Dart 基於核心承諾,讓跨平台 Dart 程式碼可以在 廣泛的平台 上運行。但是,這通常需要補充以與現有程式碼進行互操作的能力,無論這些程式碼來自舊的專案還是其他函式庫或系統 API 中提供的 API。為了實現這一點,Dart 提供了 與原生 C API 的互操作性,並且正在努力擴展它以支援與 Java + KotlinObjective C + Swift 的互操作性。有關更多詳細信息,請查看今天的 Dart 3.2 部落格發文

WebAssembly 之路

Wasm(也稱為 WebAssembly)是一種 Web 瀏覽器的令人興奮的新指令格式,它提供了一種可移植的、平台中立的、二進位程式碼格式,可以在現代瀏覽器中執行。像 Dart 這樣的高級受控語言使用垃圾收集,而垃圾收集正在被加入到 WebAssembly 標準中。截至 Chrome 119,WebAssembly 的垃圾收集支援(Wasm-GC)預設啟用。Wasm-GC 支援也將在 Firefox 120(他們的下一個穩定版本)中推出。

Dart 編譯器對 Wasm 的支援幾乎已完成,而 Flutter Web 現在使用了一個新的渲染引擎,它可以讓所有渲染都在 WebAssembly 程式碼中進行。雖然還有更多工作要做,支援仍然被認為是實驗性的,但我們已經能夠運行一些應用程式,例如 Material 3 演示Dart 3.2 部落格發文 中有更多詳細信息。

生動社群的力量

今天的部落格發文僅僅是過去幾個季度中數千個改進的示例。更重要的是,越來越多的改進來自Google以外的開發者貢獻——最近發佈的 2023 年 GitHub Octoverse 報告 關於開源活動,將 Flutter 專案列為所有 GitHub 開源專案中的前 3 名。

感謝您的非凡支援,我們度過了美好的一年。對於 Dart 和 Flutter 社群的多樣性、熱情和友善精神,我們表示感謝,他們在產品成功中發揮了至關重要的作用。我們迫不及待地想看看您接下來會建立什麼。在下次更新之前,感謝您的支援 🙏,並祝您編碼愉快!


今年邁向跨平台開發的重要里程碑 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。