今天,我們正式宣佈 Flutter 2 重大升級, 使開發人員能夠為任何平臺建立美觀、快速且可移植的應用程式。 藉助 Flutter 2,您可以使用相同的程式碼庫將本機應用程式釋出到五個作業系統: iOS,Android,Windows,macOS 和 Linux; 以及針對 Chrome,Firefox,Safari 或 Edge 等瀏覽器的 Web 體驗。 Flutter 甚至可以嵌入到汽車,電視和智慧家電中,為環境計算世界提供普遍且可延展的體驗。
我們的目標是從根本上改變開發人員對構建應用程式的看法, 不從您要定位的平臺開始,而要從您要帶來的體驗開始。 Flutter 使您可以在品牌和設計走在前列的情況下,手工創造 美好 的體驗。 Flutter 速度很快,可以將原始碼編譯為機器程式碼, 同時由於我們有著可維持狀態的熱過載的支援,您仍然可以在正式環境的 提升開發生產力, 在應用程式執行時您可以進行更改並立即檢視結果。 Flutter 是 開放 的,成千上萬的貢獻者為核心框架添磚加瓦, 並通過軟體包的生態系統對其進行了擴充套件。
在 今天釋出 的 Flutter 2 中, 我們將 Flutter 從移動框架擴充套件為 可移植 框架, 讓您的應用程式可以在各種不同的平臺上執行,幾乎沒有妥協。 僅 Play 商店就已經有 超過 15 萬個 Flutter 應用程式, 並且每個應用程式都可以通過 Flutter 2 免費升級, 因為它們現在可以在不重寫的情況下,擴充套件到桌面端和 Web 平臺。
來自世界各地的客戶正在使用 Flutter, 包括一些流行的應用程式, 如 微信、 Grab、 Yandex Go、 Nubank、 Sonos、 Fastic、 Betterment 和 realtor.com。 在 Google,我們依賴 Flutter, Google 的一千多名工程師正在使用 Dart 和 Flutter 構建應用程式。 實際上,其中許多產品已經交付,包括 Stadia,Google One 和 Google Nest Hub。
幾個月前,Google Pay——其團隊的標杆應用 完全改為用 Flutter 開發, 他們已經在生產力和質量上取得了重大進步。 通過統一程式碼庫,該團隊消除了平臺之間的功能差異,並消除了超過一百萬行程式碼。 Google Pay 團隊同時說,其工程師的效率要高得多,技術債大大減少, 統一發布流程(如跨 iOS 和 Android 的安全性審查和試驗)得以實現。
Flutter Web
Flutter 2 中最激動人心的也許是 對 Web 的生產支援。
Web 的早期基礎是以文件 (Documents) 為中心的。 但是,Web 平臺經過多年發展,平臺 API 已經非常豐富, 這些 API 可以使用有硬體加速的 2D 和 3D 圖形, 以及靈活的佈局和繪畫 API, 來製作高度複雜的應用程式。 Flutter 的 Web 基於這些創新,提供了 以應用程式為中心 的框架, 該框架充分利用了現代 Web 所提供的所有優勢。
首個版本將特別關注三種應用程式場景:
-
漸進式 Web 應用程式 (PWAs),將 Web 的與桌面應用程式的功能結合在一起。
-
單頁應用程式(SPAs),一次性載入並與網路服務之間進行資料傳輸。
-
將現有的 Flutter 移動應用程式帶到 Web 上,用同樣的程式碼帶來同樣的體驗。
在過去的幾個月中,在為穩定版 Web 釋出做準備的同時, 我們在效能優化方面取得了許多進展, 新增了一個新的由 WebAssembly 構建的由 CanvasKit 驅動的渲染引擎。 Flutter Plasma 是由社群成員 Felix Blaschke 構建的一個演示應用, 展示了使用 Dart 和 Flutter 以簡易步驟構建複雜 Web 圖形的體驗, 這個示例也可以在桌面或移動裝置上執行。
我們一直在擴充套件 Flutter,以提供在 Web 平臺提供最佳的體驗。 最近幾個月,我們新增了文字自動填充功能、 對位址列 URL 和路由的控制以及 PWA 清單。 同時,由於桌面端瀏覽器與移動端瀏覽器一樣重要, 我們還新增了互動式滾動條和鍵盤快捷鍵,增加了桌面端模式下的預設內容密度, 並增加了螢幕閱讀器對 Windows、macOS 和 Chrome OS 上輔助功能的支援。
這裡有一些使用 Flutter 構建的 Web 應用程式的示例。 在教育工作者中,iRobot 以其流行的 Root 教育機器人 而聞名。 Flutter 對 Web 的生產支援使 iRobot 可以利用將現有的 教育程式設計環境 移至 Web 平臺, 從而將其可用性擴充套件到 Chromebook 和其他瀏覽器, 因為瀏覽器是最佳的裝置選擇。 iRobot 的部落格文章 詳細介紹了迄今為止的進展,以及他們為何選擇 Flutter。
另一個例子是 Rive,Rive 為設計師提供了一個強大的工具, 用於建立可釋出到任何平臺的自定義動畫。 他們的 更新後的 Web 應用程式 現已釋出 beta 版本, 完全由 Flutter 構建,是 Flutter 為大家獻上的一封情書。
您可以在 我們的文章中 找到有關 Flutter Web 的更多資訊。
桌面端、摺疊裝置和嵌入式裝置上的 Flutter 2
除了傳統的移動裝置和 Web 之外,Flutter 越來越多地擴充套件到其他裝置型別, 我們在今天的主題演講中重點介紹了三個夥伴關係,這些夥伴關係證明了 Flutter 的延展性。
首先,Canonical 與我們合作將 Flutter 帶入桌面端, 工程師們貢獻了程式碼來支援 Linux 上的開發和部署。 在今天的活動中,Ubuntu 團隊展示了由 Flutter 重寫的新安裝程式的早期版本。 對於 Canonical 至關重要的是,它們可以在各種硬體配置上提供堅如磐石而又優美的體驗。 展望未來,Flutter 是 Canonical 未來建立桌面和移動應用的預設選擇。
其次,微軟 正在繼續擴大對 Flutter 的支援。 除了 正在進行的合作 的在 Flutter 中提供高質量的 Windows 支援外, 今天微軟還將釋出 Flutter 引擎對新型的可摺疊 Android 裝置的支援。 這些裝置引入了新的設計模式,其應用程式可以擴充套件內容,或利用雙屏特性提供並行體驗。 在 Surface 工程團隊的部落格文章 中, 他們展示了他們的工作成果,並邀請其他人加入他們, 共同完成適用於 Surface Duo 和其他裝置的高質量實現。
最後,世界上最暢銷的汽車製造商 豐田汽車 宣佈了其計劃, 通過構建由 Flutter 提供動力的資訊娛樂系統,將最佳的數字體驗帶入車輛。 使用 Flutter 標誌著與過去開發車載軟體的方式大相徑庭。 豐田之所以選擇 Flutter,是因為其高效能和經驗的一致性, 快速的迭代和開發人員的人機工程學以及智慧手機層的觸控機制。 通過使用 Flutter 的 embedder API, 豐田可以針對車載系統的獨特需求量身定製 Flutter。
我們很高興繼續與豐田和其他公司合作,將 Flutter 應用於汽車、電視和其他嵌入式裝置, 我們希望在未來幾個月中可以分享更多示例。
持續發展的 Flutter 生態系統
現在,有超過 15,000 個 Flutter 和 Dart 軟體包: 來自 亞馬遜、 微軟、 Adobe、 阿里巴巴、 eBay 和 Square 等公司;一些重要的軟體包,如 Lottie、 Sentry 和 SVG, 以及 Flutter Favorite 軟體包,如 sign_in_with_apple、 google_fonts、 geolocator 和 sqflite。
今天,我們宣佈推出 Google 移動廣告 Flutter 外掛的測試版, 這是一個可與 AdMob 和 AdManager 配合使用的新 SDK, 可提供多種廣告格式,包括橫幅廣告、嵌入式廣告、原生廣告和激勵視訊廣告。 我們一直在與幾個主要客戶一起試用該 SDK, 例如拉丁美洲最大的獨立藝術家音樂平臺 SuaMúsica, 現在我們準備開放 Google 移動廣告 Flutter SDK 以便更廣泛地使用。
我們還將宣佈對 Flutter 外掛的一些核心 Firebase 服務進行更新: 身份驗證、雲資料庫、無伺服器雲函式、雲訊息、雲端儲存 和 崩潰分析, 包括對健全空安全的支援,以及對雲訊息軟體包的全面檢查。
Dart:Flutter 背後的祕製調料
先前我們提到,Flutter 2 可移植到許多不同的平臺和外形上。 輕鬆過渡到支援 Web、桌面和嵌入式裝置的過程, 很大程度上要歸功於 Dart, 它是一門針對多平臺開發進行了優化的 Google 程式語言。
Dart 結合了一套獨特的功能來構建應用程式:
-
不會突兀的可移植性,其編譯器可為移動端和桌面端生成高效能的 Intel 和 ARM 機器程式碼, 併為 Web 提供經過嚴格優化的 JavaScript 輸出。 相同的Flutter框架原始碼可編譯到所有這些目標。
-
在桌面和移動裝置上可維持狀態的熱過載的迭代開發, 以及為現代UI程式設計的非同步,併發模式設計的語言構造。
-
在所有平臺上的 Google 級效能, 健全的空安全保證了執行時和開發過程中的可空性約束。
沒有其他語言如 Dart 這般結合了所有功能, 也許這就是為什麼 Dart 是 GitHub 上發展最快的語言之一的原因。
Dart 2.12 現已可以使用,是我們自 2.0 版以來最大的發行版, 支援 健全的空安全 模式。 健全的空安全可以消除可怕的空指標引用異常,從而在開發和執行時提供了保證, 即只有當開發人員明確需要可空型別時,型別才能包含 null 值。 最重要的是,此功能不是一項破壞性更改: 您可以按照自己的步調將其逐步新增到程式碼中,並可以使用遷移工具在準備就緒時為您提供幫助。
今天的更新還包括 FFI 的穩定實現, 使您可以編寫可與基於 C 的 API 互動的高效能程式碼。 用 Flutter 編寫的 新的整合開發人員和分析器工具; 以及許多效能和大小上的改進, 這些改進可以進一步升級程式碼,而無需重新編譯即可。 有關更多資訊, 請參閱 Dart 2.12 釋出 部落格文章。
Flutter 2:現已可用
關於 Flutter 2,要說的事情一言難盡。 實際上,已合併的拉取請求的原始列表文件長達 200 頁! 請訪問 專門介紹 Flutter 2 的文章, 以獲取有關許多新功能和效能改進的資訊, 我們認為 Flutter 開發人員將會非常滿意,並立即下載新版。
我們還有一個主要的新的示例應用,它展示了剛才提到的所有內容, 該樣本是我們與位於加拿大埃德蒙頓的屢獲殊榮的設計團隊 gskinner 合作構建的。 Flutter Folio 是一款剪貼簿應用程式, 為您所有的裝置而設計。 小螢幕下是專為捕獲內容而設計的; 大螢幕支援使用桌面端和平板電腦專用的習慣進行編輯; Web 平臺是為共享內容而量身定製的。 所有這些量身定製的內容都使用著相同的程式碼庫,該程式碼庫是開源的,可供您參考。
如果您還沒有嘗試過 Flutter,您會發現它對您的應用程式開發體驗而言是一次重大升級。 在 Flutter 中,我們提供了一個開放原始碼工具包, 用於通過單個程式碼庫構建針對移動、桌面端、Web 和嵌入式裝置的美觀而快速的應用程式, 這些應用程式既可以滿足 Google 的苛刻需求,同時也能滿足我們客戶的需求。
Flutter 是免費且開源的。我們很高興看到您使用 Flutter 2 構建產品!