針對 Web,移動端和桌面端構(gòu)建的下一代 Flutter
今天,我們正式宣布 Flutter 2 重大升級, 使開發(fā)人員能夠為任何平臺創(chuàng)建美觀、快速且可移植的應用程序。借助 Flutter 2,您可以使用相同的代碼庫將本機應用程序發(fā)布到五個操作系統(tǒng):iOS,Android,Windows,macOS 和 Linux;以及針對 Chrome,F(xiàn)irefox,Safari 或 Edge 等瀏覽器的 Web 體驗。Flutter 甚至可以嵌入到汽車,電視和智能家電中,為環(huán)境計算世界提供普遍且可延展的體驗。

我們的目標是從根本上改變開發(fā)人員對構(gòu)建應用程序的看法, 不從您要定位的平臺開始,而要從您要帶來的體驗開始。Flutter 使您可以在品牌和設(shè)計走在前列的情況下,手工創(chuàng)造 美好 的體驗。Flutter 速度很快,可以將源代碼編譯為機器代碼, 同時由于我們有著可維持狀態(tài)的熱重載的支持,您仍然可以在正式環(huán)境的 提升開發(fā)生產(chǎn)力, 在應用程序運行時您可以進行更改并立即查看結(jié)果。Flutter 是 開放 的,成千上萬的貢獻者為核心框架添磚加瓦, 并通過軟件包的生態(tài)系統(tǒng)對其進行了擴展。

在 今天發(fā)布 的 Flutter 2 中, 我們將 Flutter 從移動框架擴展為 可移植 框架, 讓您的應用程序可以在各種不同的平臺上運行,幾乎沒有妥協(xié)。僅 Play 商店就已經(jīng)有 超過 15 萬個 Flutter 應用程序, 并且每個應用程序都可以通過 Flutter 2 免費升級, 因為它們現(xiàn)在可以在不重寫的情況下,擴展到桌面端和 Web 平臺。
來自世界各地的客戶正在使用 Flutter, 包括一些流行的應用程序, 如 微信、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment 和realtor.com。在 Google,我們依賴 Flutter, Google 的一千多名工程師正在使用 Dart 和 Flutter 構(gòu)建應用程序。實際上,其中許多產(chǎn)品已經(jīng)交付,包括 Stadia,Google One 和 Google Nest Hub。

幾個月前,Google Pay——其團隊的標桿應用完全改為用 Flutter 開發(fā), 他們已經(jīng)在生產(chǎn)力和質(zhì)量上取得了重大進步。通過統(tǒng)一代碼庫,該團隊消除了平臺之間的功能差異,并消除了超過一百萬行代碼。Google Pay 團隊同時說,其工程師的效率要高得多,技術(shù)債大大減少, 統(tǒng)一發(fā)布流程(如跨 iOS 和 Android 的安全性審查和試驗)得以實現(xiàn)。
Flutter Web
Flutter 2 中最激動人心的也許是 對 Web 的生產(chǎn)支持。
Web 的早期基礎(chǔ)是以文檔 (Documents) 為中心的。但是,Web 平臺經(jīng)過多年發(fā)展,平臺 API 已經(jīng)非常豐富, 這些 API 可以使用有硬件加速的 2D 和 3D 圖形, 以及靈活的布局和繪畫 API, 來制作高度復雜的應用程序。Flutter 的 Web 基于這些創(chuàng)新,提供了 以應用程序為中心 的框架, 該框架充分利用了現(xiàn)代 Web 所提供的所有優(yōu)勢。
首個版本將特別關(guān)注三種應用程序場景:
漸進式 Web 應用程序 (PWAs),將 Web 的與桌面應用程序的功能結(jié)合在一起。
單頁應用程序(SPAs),一次性加載并與網(wǎng)絡(luò)服務之間進行數(shù)據(jù)傳輸。
將現(xiàn)有的 Flutter 移動應用程序帶到 Web 上,用同樣的代碼帶來同樣的體驗。
在過去的幾個月中,在為穩(wěn)定版 Web 發(fā)布做準備的同時, 我們在性能優(yōu)化方面取得了許多進展, 添加了一個新的由 WebAssembly 構(gòu)建的由CanvasKit驅(qū)動的渲染引擎。Flutter Plasma是由社區(qū)成員 Felix Blaschke 構(gòu)建的一個演示應用, 展示了使用 Dart 和 Flutter 以簡易步驟構(gòu)建復雜 Web 圖形的體驗, 這個示例也可以在桌面或移動設(shè)備上運行。
我們一直在擴展 Flutter,以提供在 Web 平臺提供最佳的體驗。最近幾個月,我們添加了文本自動填充功能、 對地址欄 URL 和路由的控制以及 PWA 清單。同時,由于桌面端瀏覽器與移動端瀏覽器一樣重要, 我們還添加了交互式滾動條和鍵盤快捷鍵,增加了桌面端模式下的默認內(nèi)容密度, 并增加了屏幕閱讀器對 Windows、macOS 和 Chrome OS 上輔助功能的支持。
這里有一些使用 Flutter 構(gòu)建的 Web 應用程序的示例。在教育工作者中,iRobot以其流行的 Root 教育機器人 而聞名。Flutter 對 Web 的生產(chǎn)支持使 iRobot 可以利用將現(xiàn)有的教育編程環(huán)境 移至 Web 平臺, 從而將其可用性擴展到 Chromebook 和其他瀏覽器, 因為瀏覽器是最佳的設(shè)備選擇。iRobot 的博客文章詳細介紹了迄今為止的進展,以及他們?yōu)楹芜x擇 Flutter。

另一個例子是 Rive,Rive 為設(shè)計師提供了一個強大的工具, 用于創(chuàng)建可發(fā)布到任何平臺的自定義動畫。他們的 更新后的 Web 應用程序 現(xiàn)已發(fā)布 beta 版本, 完全由 Flutter 構(gòu)建,是 Flutter 為大家獻上的一封情書。

您可以在 我們的文章中找到有關(guān) Flutter Web 的更多信息。
桌面端、折疊設(shè)備和嵌入式設(shè)備上的 Flutter 2
除了傳統(tǒng)的移動設(shè)備和 Web 之外,F(xiàn)lutter 越來越多地擴展到其他設(shè)備類型, 我們在今天的主題演講中重點介紹了三個伙伴關(guān)系,這些伙伴關(guān)系證明了 Flutter 的延展性。
首先,Canonical 與我們合作將 Flutter 帶入桌面端, 工程師們貢獻了代碼來支持 Linux 上的開發(fā)和部署。在今天的活動中,Ubuntu 團隊展示了由 Flutter 重寫的新安裝程序的早期版本。對于 Canonical 至關(guān)重要的是,它們可以在各種硬件配置上提供堅如磐石而又優(yōu)美的體驗。展望未來,F(xiàn)lutter 是 Canonical 未來創(chuàng)建桌面和移動應用的默認選擇。

其次,微軟 正在繼續(xù)擴大對 Flutter 的支持。除了 正在進行的合作的在 Flutter 中提供高質(zhì)量的 Windows 支持外, 今天微軟還將發(fā)布 Flutter 引擎對新型的可折疊 Android 設(shè)備的支持。這些設(shè)備引入了新的設(shè)計模式,其應用程序可以擴展內(nèi)容,或利用雙屏特性提供并行體驗。在 Surface 工程團隊的博客文章 中, 他們展示了他們的工作成果,并邀請其他人加入他們, 共同完成適用于 Surface Duo 和其他設(shè)備的高質(zhì)量實現(xiàn)。

最后,世界上最暢銷的汽車制造商 豐田汽車 宣布了其計劃, 通過構(gòu)建由 Flutter 提供動力的信息娛樂系統(tǒng),將最佳的數(shù)字體驗帶入車輛。使用 Flutter 標志著與過去開發(fā)車載軟件的方式大相徑庭。豐田之所以選擇 Flutter,是因為其高性能和經(jīng)驗的一致性, 快速的迭代和開發(fā)人員的人機工程學以及智能手機層的觸摸機制。通過使用 Flutter 的 embedder API, 豐田可以針對車載系統(tǒng)的獨特需求量身定制 Flutter。

我們很高興繼續(xù)與豐田和其他公司合作,將 Flutter 應用于汽車、電視和其他嵌入式設(shè)備, 我們希望在未來幾個月中可以分享更多示例。
持續(xù)發(fā)展的 Flutter 生態(tài)系統(tǒng)
現(xiàn)在,有超過 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, 例如拉丁美洲最大的獨立藝術(shù)家音樂平臺 SuaMúsica, 現(xiàn)在我們準備開放 Google 移動廣告 Flutter SDK 以便更廣泛地使用。

我們還將宣布對 Flutter 插件的一些核心 Firebase 服務進行更新:身份驗證、云數(shù)據(jù)庫、無服務器云函數(shù)、云消息、云存儲 和 崩潰分析, 包括對健全空安全的支持,以及對云消息軟件包的全面檢查。
Dart:Flutter 背后的秘制調(diào)料
先前我們提到,F(xiàn)lutter 2 可移植到許多不同的平臺和外形上。輕松過渡到支持 Web、桌面和嵌入式設(shè)備的過程, 很大程度上要歸功于 Dart, 它是一門針對多平臺開發(fā)進行了優(yōu)化的 Google 編程語言。
Dart 結(jié)合了一套獨特的功能來構(gòu)建應用程序:
不會突兀的可移植性,其編譯器可為移動端和桌面端生成高性能的 Intel 和 ARM 機器代碼, 并為 Web 提供經(jīng)過嚴格優(yōu)化的 JavaScript 輸出。相同的Flutter框架源代碼可編譯到所有這些目標。
在桌面和移動設(shè)備上可維持狀態(tài)的熱重載的迭代開發(fā), 以及為現(xiàn)代UI編程的異步,并發(fā)模式設(shè)計的語言構(gòu)造。
在所有平臺上的 Google 級性能, 健全的空安全保證了運行時和開發(fā)過程中的可空性約束。
沒有其他語言如 Dart 這般結(jié)合了所有功能, 也許這就是為什么 Dart 是GitHub 上發(fā)展最快的語言之一的原因。
Dart 2.12 現(xiàn)已可以使用,是我們自 2.0 版以來最大的發(fā)行版, 支持 健全的空安全 模式。健全的空安全可以消除可怕的空指針引用異常,從而在開發(fā)和運行時提供了保證, 即只有當開發(fā)人員明確需要可空類型時,類型才能包含 null 值。最重要的是,此功能不是一項破壞性更改:您可以按照自己的步調(diào)將其逐步添加到代碼中,并可以使用遷移工具在準備就緒時為您提供幫助。
今天的更新還包括 FFI 的穩(wěn)定實現(xiàn), 使您可以編寫可與基于 C 的 API 交互的高性能代碼。用 Flutter 編寫的新的集成開發(fā)人員和分析器工具;以及許多性能和大小上的改進, 這些改進可以進一步升級代碼,而無需重新編譯即可。有關(guān)更多信息, 請參閱 Dart 2.12 發(fā)布博客文章。
Flutter 2:現(xiàn)已可用
關(guān)于 Flutter 2,要說的事情一言難盡。實際上,已合并的拉取請求的原始列表文檔長達 200 頁!請訪問 專門介紹 Flutter 2 的文章, 以獲取有關(guān)許多新功能和性能改進的信息, 我們認為 Flutter 開發(fā)人員將會非常滿意,并立即下載新版。

我們還有一個主要的新的示例應用,它展示了剛才提到的所有內(nèi)容, 該樣本是我們與位于加拿大埃德蒙頓的屢獲殊榮的設(shè)計團隊gskinner 合作構(gòu)建的。Flutter Folio 是一款剪貼簿應用程序, 為您所有的設(shè)備而設(shè)計。小屏幕下是專為捕獲內(nèi)容而設(shè)計的;大屏幕支持使用桌面端和平板電腦專用的習慣進行編輯;Web 平臺是為共享內(nèi)容而量身定制的。所有這些量身定制的內(nèi)容都使用著相同的代碼庫,該代碼庫是開源的,可供您參考。
如果您還沒有嘗試過 Flutter,您會發(fā)現(xiàn)它對您的應用程序開發(fā)體驗而言是一次重大升級。在 Flutter 中,我們提供了一個開放源代碼工具包, 用于通過單個代碼庫構(gòu)建針對移動、桌面端、Web 和嵌入式設(shè)備的美觀而快速的應用程序, 這些應用程序既可以滿足 Google 的苛刻需求,同時也能滿足我們客戶的需求。
Flutter 是免費且開源的。我們很高興看到您使用 Flutter 2 構(gòu)建產(chǎn)品!
