針對 Web,Mobile 和 Desktop 的下一代 Flutter 。
今天 Flutter 2 正式版釋出了,作為 Flutter 的重大升級,使用 Flutter 2 開發者可以用相同的程式碼,把使用 Flutter 開發的應用釋出到五個作業系統:iOS
,Android
,Windows
,macOS
和 Linux
; 以及執行到 Chrome
、 Firefo
, Safari
或 Edge
等瀏覽器的 Web 版本上,Flutter 甚至還可以嵌入到 Cars, TVs 和智慧家電中。
Flutter 的目標是從根本上改變開發人員對構建應用程式的思路,讓開發者從需要完成的使用者需求開始實現,而不是從開發者需要適配的平臺開始。
Flutter 可以讓你在擁有更好設計效果的情況下,得到更好的使用者體驗,因為它的執行速度很快,它會將原始碼編譯為機器程式碼,但是 Flutter 在開發過程中支援的 hotload,所以也可以在應用程式除錯執行時進行更改並立即檢視結果。
最後,Flutter 是開放的,已經有成千上萬的開發者成為了它的貢獻者,並通過各種 packages 對其進行了擴充套件。
在今天釋出的 Flutter 2 中,Flutter 正式將從移動框架擴充套件到了全平臺框架,使用 Flutter 2 開發者可以讓它的應用直接運用到各種不同的平臺而幾乎不需要做出什麼改變。
現在僅 Play 商店就已經有超過 15萬個Flutter 應用程式,並且每個應用程式都可以通過 Flutter 2 進行免升級,因為它們現在可以在不重寫的情況下擴充套件到 Desktop
和Web
。
PS: 個人認為這個的是可行性太低了,純屬吹水。
全球各大主流企業都已經使用了 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 on the web
Flutter 2 中最大的修改之一就是對Web的生產質量有了新的支援。
Flutter 的Web 支援基於有硬體加速的2D和3D圖形以及靈活的佈局和繪畫API,提供了以應用程式為中心的框架,該框架充分利用了現代Web所提供的所有優勢。
此初始版本特別關注三種應用程式場景:
- 漸進式Web應用程式(PWA):將Web的訪問範圍與桌面應用程式的功能結合在一起。
- 單頁應用程式(SPA),一次載入並與網路之間進行資料傳輸。
- 將現有的 Flutter 移動應用程式帶到Web上,從而為兩種體驗啟用共享程式碼。
在過去的幾個月中,在為穩定釋出 Web 支援做準備的同時,也在效能優化方面取得了許多進展,比如新增了一個由 WebAssembly 構建的 CanvasKit 驅動渲染引擎。
Flutter Plasma 是由社群成員 Felix Blaschke 構建的 Demo ,展示了使用 Dart 和 Flutter 構建複雜的 Web 圖形體驗的簡便性,這些體驗也可以在桌面或移動裝置上本地執行。
此外我們也一直在擴充套件 Flutter 以提供最佳的Web平臺。最近幾個月,Flutter 新增了文字自動填充功能,對位址列 URL 和路由的控制 和 PWA manifests,而且由於 desktop browsers
與移動瀏覽器一樣重要,因此我們還新增了互動式滾動條和鍵盤快捷鍵,以此來增加了 desktop
下的預設內容的緊密程度,並增加了螢幕閱讀對 Windows,macOS 和Chrome OS 上可訪問支援。
desktops, foldables, and embedded devices
除了傳統的移動裝置和 Web 之外,Flutter 被越來越多地擴充套件到其他裝置型別,今天的主題演重點介紹了三個夥伴關係,這些夥伴關係證明了 Flutter 的可移植能力。
首先 Canonical
與我們合作將 Flutter 帶入 desktop ,開發者貢獻了許多程式碼來支援Linux 上的開發和部署。
在今天的活動中,,Ubuntu 團隊展示了由 Flutter 重寫的早期新安裝程式的演示,這對於Canonical 來說,它們可以在各種硬體配置上提供穩定而又優美的體驗,而展望未來,Flutter是 Canonical 建立的未來 desktop 和移動應用程式的預設選擇。
其次微軟正在繼續擴大對 Flutter 的支援,除了對 Flutter 提供高質量的 Windows 支援外,今天微軟還將釋出對 Flutter 引擎以支援新興的可摺疊 Android 裝置的支援。這些裝置引入了新的設計模式,其應用程式可以擴充套件內容或利用雙屏特性提供並行體驗。在 Surface 工程團隊的部落格文章中展示了他們的成功。
最後是汽車製造商豐田汽車宣佈了其計劃:通過 Flutter 構建其資訊娛樂系統,將最佳的數字體驗帶入車輛。
使用 Flutter 標誌著與過去開發車載軟體的方式大相徑庭,豐田之所以選擇 Flutter 是因為其高效能和經驗的一致性,快速的迭代和開發人員的人機工程學以及智慧手機層的觸控機制,通過使用 Flutter 的 embedder API,Toyota 可以針對車載系統的獨特需求量身定製Flutter。
我們很高興繼續與豐田和其他公司合作,將 Flutter 應用於汽車,電視和其他嵌入式裝置,我們希望在未來幾個月中分享更多示例。
不斷髮展的Flutter生態系統
現在,有超過 15,000 個 Flutter 和 Dart 軟體包:來自 Amazon
,Microsoft
,Adobe
,Alibaba
,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 服務進行更新:Authentication
,Cloud Firestore
,Cloud Functions
,Cloud Messaging
,Cloud Storage
和 Crashlytics
,包括對可靠的 null 安全性的支援以及對 Cloud Messaging 軟體包的全面檢查。
Dart: The secret sauce behind Flutter
正如前面描述的,Flutter 2 可移植到許多不同的平臺和裝置上,並且輕鬆過渡到支援 Web,桌面和嵌入式平臺,這個過程很大程度上要歸功於 Dart,它是針對多平臺開發進行了優化的Google 程式語言。
Dart 結合了一套獨特的功能來構建應用程式:
-
毫無爭議的可移植性,其編譯器成為 Mobile 和 Desktop 上高效能的Intel和ARM機器程式碼,併為 Web 提供經過嚴格優化的 JavaScript 輸出,相同的 Flutter 框架原始碼可編譯到所有這些目標。
-
在桌面和移動裝置上進行有狀態熱過載的迭代開發,其優秀的非同步,併發模式設計的語言構造。
-
在所有這些平臺上擁有 Google 級效能,可靠的 null 安全性保證了執行時和開發過程中的null約束。
沒有其他語言可以結合所有這些功能。也許這就是為什麼 Dart 是GitHub上發展最快的語言之一的原因。
PS:我覺得這純屬吹水引戰。
Dart 2.12 現已上市,是我們自 2.0 版以來最大的釋出版本,支援 null safety。可靠的null 安全性可以消除可怕的 null 引用異常,從而在開發和執行時提供了保證。最重要的是,此功能不是一項重大更改:開發者可以按照自己的步調將其逐步新增到程式碼中,並可以使用遷移工具在準備就緒時再使用。
今天的更新還包括 FFI 的穩定實現,開發者可以編寫基於 C 的 API 高效能程式碼和 Flutter 互動,用 Flutter 編寫新的整合開發人員分析器工具,以及許多效能和大小上的改進,這些改進可以進一步升級程式碼,而無需重新編譯。有關更多資訊,請檢視專用的Dart 2.12公告部落格文章。
Flutter 2: Available now
關於 Flutter 2,要說的話遠遠超出了在本文中可以涵蓋的範圍。
實際上,合併的 PR 原始列表是一個200頁的文件!請訪問 Flutter 2 相關的獨立技術部落格,以獲取有關許多新功能和效能改進的資訊。
我們還有一個主要的 Demo,它展示了剛才前面提到的所有內容,該樣本是與位於加拿大埃德蒙頓的屢獲殊榮的設計團隊 gskinner
合作構建的。Flutter Folio 是一款剪貼簿應用程式,專為所有裝置而設計。
小螢幕體驗是專為捕獲內容而設計的;大螢幕支援使用桌上型電腦和平板電腦專用的習慣用法進行編輯; Web 體驗是為共享而量身定製的。所有這些量身定製的經驗都共享相同的程式碼庫,該程式碼庫是開源的。
如果你還沒有嘗試過 Flutter,建議你趕緊試試,它會對你的應用程式開發體驗來會是一次重大升級。在 Flutter 中提供了一個開放原始碼工具包,用於通過單個程式碼庫構建針對移動,桌上型電腦,Web和嵌入式裝置的美觀而快速的應用程式,這些應用程式既可以滿足 Google 的苛刻需求,也可以滿足我們客戶的需求。
Flutter 是免費的開放原始碼,我們很高興看到開發者使用 Flutter 2 構建的優秀的應用!