3月4日凌晨,Flutter 2 正式發佈: 開發者爲任何平臺建立美觀、快速且可移植應用的能力得以更上一層樓。經過 Flutter 2,您可使用相同的代碼庫爲五種操做系統構建原生應用: iOS、Android、Windows、macOS 和 Linux;以及爲 Chrome、Firefox、Safari 和 Edge 等瀏覽器打造 web 體驗。Flutter 甚至能夠嵌入到汽車、電視和智能家電,爲環境計算提供最普適、可移植的體驗。html
咱們的目標是從根本上改變開發者的應用構建思路,讓體驗先於平臺。Flutter 可讓您盡情雕琢精美的應用體驗,暢快表達本身的品牌和設計風格。Flutter 能夠將您的源代碼編譯爲機器碼,並快速運行,同時藉助有狀態熱重載功能爲您帶來了解釋環境的高效生產力,讓您能夠在應用運行時作出更改並當即查看結果。並且 Flutter 是開源的,有成千上萬的貢獻者在爲核心框架添磚加瓦,並圍繞其打造了包含海量 package 的生態系統。git
在 發佈 的 Flutter 2 中,咱們將 Flutter 從移動框架擴展爲可移植框架,讓您的應用基本能夠不加變更地在多種平臺上運行。僅 Google Play 商店就已有超過 15 萬款 Flutter 應用,而如今應用能夠在無需重寫的狀況下部署到桌面設備和 web 平臺,能夠說每款應用都經過 Flutter 2 獲得 "免費升級"。github
世界各地的用戶都在使用 Flutter,包括 WeChat、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment 和 realtor.com 等熱門應用。Flutter 在 Google 也是備受依賴的重要工具,咱們有一千多名工程師正在使用 Dart 和 Flutter 構建應用。許多產品已經發布,包括 Stadia、Google One 和 Google Nest Hub。web
幾個月前,Google Pay 改用 Flutter 打造其旗艦移動應用,在生產力和質量上取得重大進步。經過統一代碼庫,團隊消除了平臺之間的功能差別,精簡了超過 50 萬行代碼。Google Pay 還表示,其工程師效率大幅提升,技術債務顯著減小,並在 iOS 和 Android 系統上統一了安全審查和實驗等發佈流程。編程
也許 Flutter 2 帶來的最重大的進展是在 web 平臺達到了穩定版。canvas
Web 的 早期基礎以文檔爲中心。但 web 平臺通過發展,所包含的平臺 API 也愈加豐富,已實現高度複雜的應用,支持硬件加速 2D 和 3D 圖形以及靈活的佈局和繪畫 API。Flutter 的 web 支持創建在這些創新的基礎上,提供了一個以應用爲中心 的框架,能充分展示現代 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,他們爲設計師打造的強大工具能夠將建立的自定義動畫發佈到任意平臺。其 新版 web 應用 完 全由 Flutter 構建,現已進入 Beta 階段,這也是 web 平臺最能展示 Flutter 特點的體驗之一。
您能夠從 Flutter web 發佈文章 中瞭解更多信息。
除了傳統的移動設備和 web 以外,Flutter 正愈來愈多地覆蓋到其餘類型設備。Flutter Engage 主題演講中重點介紹了三位合做夥伴,以展現 Flutter 的可移植性。
第一位合做夥伴,Canonical 與咱們聯手將 Flutter 帶到桌面,Canonical 工程師貢獻的代碼使得 Flutter 開發者能在 Linux 上進行開發和部署。在活動中,Ubuntu 團隊展現了使用 Flutter 重寫的新安裝程序的早期演示版。對 Canonical 來講,在多種硬件配置上提供穩如磐石且美妙的體驗相當重要。將來,Flutter 將成爲 Canonical 打造桌面和移動應用的首選。
第二位合做夥伴 Microsoft 正在繼續擴大對 Flutter 的支持。除了 持續與咱們合做 爲 Flutter 提供高質量的 Windows 支持外,Microsoft 還發布了對 Flutter 引擎的貢獻: 支持新興的可摺疊 Android 設備。這些設備帶來了新的設計模式,應用能夠擴展內容,或者利用雙屏特性提供窗口並排體驗。Surface 工程團隊在一篇 博文 中展現了其工做成果,並邀請你們加入他們的行列,共同完成適用於 Surface Duo 和其餘設備的高質量解決方案。
第三位合做夥伴,全球暢銷汽車製造商之一 Toyota 宣佈,計劃構建由 Flutter 驅動的信息娛樂系統,打造最佳的汽車數字體驗。使用 Flutter 標誌着車載軟件的開發方式向着將來邁進了一大步。Toyota 之因此選擇 Flutter,是由於其高性能和體驗的一致性,快速迭代的能力和極高的開發者工效,以及智能手機級別的觸控體驗機制。經過使用 Flutter 的嵌入器 API,Toyota 可以根據車載系統的獨特需求對 Flutter 進行定製。
咱們很榮幸與 Toyota 等合做夥伴繼續深刻協做,將 Flutter 帶到汽車、電視和其餘嵌入式設備中,在將來幾個月咱們會爲你們帶來更多這方面的示例。
目前,Flutter 和 Dart 有超過 15,000 個 package: 包括 Amazon、Microsoft、Adobe、Alibaba、eBay 和 Square 等企業 package,Lottie、Sentry 和 SVG 等關鍵 package,以及 sign_in_with_apple、google_fonts、geolocator 和 sqflite 等 Flutter Favorite package。
咱們也爲 Flutter 帶來了 Google Mobile Ads Beta 版,這款全新 SDK 經過 AdMob 和 AdManager 提供多種廣告格式,包括橫幅式、插頁式、原生和激勵視頻廣告。咱們以前已經邀請了一些主要客戶 (好比拉丁美洲最大的獨立藝術家音樂平臺 Sua Música) 先行體驗此 SDK,如今計劃開放 Google Mobile Ads 供更多的 Flutter 開發者採用。
咱們還更新了 幾項核心 Firebase 服務的 Flutter 插件: Authentication、Cloud Firestore、Cloud Functions、Cloud Messaging、Cloud Storage 和 Crashlytics,包括對健全空安全的支持以及對 Cloud Messaging package 的全面改版。
如前所述,Flutter 2 能夠移植到許多不一樣的平臺和設備上。之因此能輕鬆過渡到支持 web、桌面和嵌入式設備,這在很大程度上要歸功於 Dart,它是 Google 爲多平臺開發優化的編程語言。
Dart 爲構建應用提供了一套獨特的功能:
沒有其餘語言能夠同時提供這些功能,也許這就解釋了爲何 Dart 能成爲 GitHub 上發展最快的語言 之一。
咱們同期發佈的 Dart 2.12 是自 2.0 以來最重大的版本更新,支持健全的空安全。健全的空安全能掃除使人頭疼的空引用異常,除非開發者明確容許,不然類型在開發時和運行時不可能包含空值。最重要的是,此功能並不是重要改動 (breaking change): 您能夠按照本身的節奏將空安全逐步添加到代碼中,咱們也準備好了遷移工具,您能夠在準備好以後使用它完成遷移。
這一版本的更新還包括: FFI 的穩定版本,讓您能夠編寫出高性能的代碼與基於 C 語言的 API 進行互操做;使用 Flutter 編寫的 新的集成開發者和性能剖析器工具;以及許多性能改進和尺寸優化,只需從新編譯便可讓代碼獲得長足的改進。如需瞭解詳細信息,請查看 Dart 2.12 發佈文章。
在介紹 Flutter 2 時,本文因爲篇幅限制不免掛一漏萬。事實上,被合併的 PR (pull request) 清單就有足足 200 頁!請閱讀 Flutter 2 技術博文,裏面介紹了更多新功能和性能改進,咱們認爲會讓 Flutter 開發者感到滿意,也請你們當即下載 Flutter 2 開始體驗。
咱們還爲你們準備了一款全新的示例應用,Flutter Folio,由咱們與加拿大埃德蒙頓的獲獎設計團隊 gskinner 合做完成,這個示例展現了咱們剛剛提到的一切內容。Flutter Folio 是一款能在您全部的設備上運行的剪貼簿應用。在小屏幕上體驗時會強調展現內容;而在大屏幕上體驗時則支持以桌面和平板電腦的習慣用法進行內容編輯;web 體驗則着重強調分享。這些定製化的體驗都共享相同的開源代碼庫,可供您自由瀏覽。
若是您還沒有嘗試過 Flutter,咱們相信它將爲您的應用開發體驗帶來巨大的提高。Flutter,一個開源工具包,讓您經過單一代碼庫爲移動、桌面、web 和嵌入式設備打造美觀、快速的應用,讓您即使是在面對 Google 和廣大用戶的苛刻需求時也能遊刃有餘。
並且 Flutter 是免費和開源的。您會使用 Flutter 2 構建怎樣精彩的應用呢?咱們拭目以待!