下一代 Flutter 專為 Web蘸际、移動與臺式機環(huán)境構(gòu)建而成。
今天徒扶,我們宣布 Flutter 2 正式亮相粮彤!作為 Flutter 的一次重大版本升級,F(xiàn)lutter 2 將幫助開發(fā)人員立足任意平臺創(chuàng)建起美觀姜骡、快速且能夠輕松移植的應(yīng)用程序导坟。在 Flutter2 的支持下,您可以使用相同的代碼庫將原生應(yīng)用程序發(fā)布至 iOS圈澈、Android惫周、Windows、macOS 以及 Linux 五大系統(tǒng)陣營之上康栈。此外递递,F(xiàn)lutter 2 還能夠完美契合 Chrome、Firefox啥么、Safari 以及 Edge 等網(wǎng)絡(luò)瀏覽器登舞,甚至可以被嵌入至汽車、電視與智能家居當(dāng)中悬荣,借此帶來最普遍菠秒、最具便攜性的計算體驗。
我們的目標(biāo)氯迂,是從根本上改變開發(fā)人員的應(yīng)用程序構(gòu)建思路践叠。不同于以往對于特定平臺的依賴,如今開發(fā)人員們可以將希望創(chuàng)造的體驗本身作為出發(fā)點囚戚。Flutter 幫助您將品牌與設(shè)計訴求充分納入應(yīng)用體驗當(dāng)中酵熙。Flutter 的運行速度極快轧简,能夠?qū)⒃创a編譯為機器碼驰坊;我們還支持有狀態(tài)熱重載,確保您在解釋環(huán)境中獲得良好生產(chǎn)力哮独,并在應(yīng)用程序運行時做出變更并立即查看結(jié)果拳芙。Flutter 是一套開放式核心框架察藐,而且已經(jīng)有成千上萬貢獻者通過軟件包生態(tài)系統(tǒng)做出擴展貢獻。
在今天發(fā)布的 Flutter 2 當(dāng)中舟扎,我們將 Flutter 由移動框架擴展為一套可移植框架分飞,努力確保您的應(yīng)用程序能夠在幾乎無需任何調(diào)整的前提下輕松運行在不同平臺之上。目前睹限,單在 Play Store 軟件商店中就存在超過 15 萬個 Flutter 應(yīng)用譬猫,且每款應(yīng)用都可以獲得 Flutter 2 提供的免費升級,由此在無需重寫的情況下直接運行在目標(biāo)臺式機及 Web 環(huán)境當(dāng)中羡疗。
目前染服,世界各地的客戶都在積極使用 Flutter,包括微信叨恨、Grab柳刮、Yandex Go、Nubank痒钝、Sonos秉颗、Fastic、Betterment 以及 realtor.com 等高人氣應(yīng)用送矩。在谷歌蚕甥,同樣有 1000 多名工程師正在使用 Dart 與 Flutter 構(gòu)建應(yīng)用產(chǎn)品,其中的代表包括 Stadia益愈、Google One 以及 Google Nest Hub梢灭。
就在幾個月前砌烁,Google Pay 剛剛轉(zhuǎn)投 Flutter 的懷抱橙喘,借此在生產(chǎn)力與質(zhì)量方面取得了重大進步傀广。通過統(tǒng)一代碼庫杖刷,項目團隊消除了不同平臺之間的功能差異薄声,并削減了超過 100 萬行代碼婉称。Google Pay 還報告稱坟冲,如今團隊工程師們的效率大為提升舞箍、技術(shù)債務(wù)顯著減少靠汁,發(fā)布流程也變得更為統(tǒng)一(例如 iOS 與 Android 上的安全審查與試驗)蜂大。
Flutter 為 Web 應(yīng)用添助力
Flutter 2 當(dāng)中最具份量的升級,當(dāng)數(shù)對 Web 的生產(chǎn)質(zhì)量支持能力蝶怔。
Web 在早期發(fā)展階段主要以文檔為中心奶浦。時至今日,Web 平臺已經(jīng)相當(dāng)豐富并提供大量平臺 API踢星,可提供硬件加速下的 2D 與 3D 圖形處理能力澳叉、靈活的布局與繪圖 API,共同構(gòu)建起高度復(fù)雜的應(yīng)用程序。Flutter 的 Web 支持充分吸納了上述創(chuàng)新優(yōu)勢成洗,提供一套以應(yīng)用程序為中心的框架體系五督,能夠發(fā)揮現(xiàn)代 Web 提供的一切功能。
新版本主要關(guān)注以下三大應(yīng)用場景:
漸進式 Web 應(yīng)用(PWA)瓶殃,將 Web 的廣泛覆蓋范圍與桌面應(yīng)用程序的功能優(yōu)勢結(jié)合起來充包。
單頁應(yīng)用程序(SPA),一次加載并與互聯(lián)網(wǎng)服務(wù)之間持續(xù)傳輸數(shù)據(jù)遥椿。
將現(xiàn)有 Flutter 移動應(yīng)用引入 Web 環(huán)境基矮,實現(xiàn)兩種體驗間的代碼共享。
過去幾個月以來冠场,我們一直努力實現(xiàn)穩(wěn)定的 Web 支持能力愈捅,并在性能優(yōu)化方面取得了大量進展。除了添加一套由 WebAssembly 構(gòu)建的全新 CanvasKit 驅(qū)動型渲染引擎之外慈鸠,我們還公布了 Flutter Plasma——由社區(qū)成員 FelixBlaschke 構(gòu)建的演示方案蓝谨,用以展示如何通過 Dart 與 Flutter 困難構(gòu)建起復(fù)雜的 Web 圖形體驗。現(xiàn)在青团,這些體驗已經(jīng)能夠在臺式機與移動設(shè)備上原生運行譬巫。
我們一直在擴展 Flutter 以構(gòu)建起行業(yè)最佳的 Web 平臺。最近幾個月督笆,我們引入了文本自動填充功能芦昔,對地址欄 URL 及路由的控制機制以及 PWA 清單功能。為了將臺式機瀏覽器與手機瀏覽器統(tǒng)一起來娃肿,我們又添加了交互式滾動條與鍵盤快捷鍵咕缎、增加了臺式機模式下的默認內(nèi)容顯示密度,同時增強了屏幕閱讀器對于 Windows料扰、MacOS 以及 Chrome OS 輔助功能的支持能力凭豪。
我們已經(jīng)發(fā)布 Flutter 構(gòu)建的部分 Web 應(yīng)用程序示例。在教育類用戶中晒杈,iRobot 公司以其高人氣 Root 教育機器人而聞名嫂伞。Flutter 對于 Web 的生產(chǎn)級支持幫助 iRobot 將現(xiàn)有教育編程環(huán)境輕松遷移至 Web,相關(guān)功能也借此順利登陸 Chromebook 及其他網(wǎng)絡(luò)瀏覽器拯钻。關(guān)于相關(guān)進展以及選擇 Flutter 的原因帖努,請參閱 iRobot 發(fā)布的 說明博文。
另以 Rive 為例粪般,這是一款專門面向設(shè)計師群體的強大工具拼余,能夠在任意平臺上創(chuàng)建出自定義動畫。其更新 Web 應(yīng)用程序現(xiàn)已提供 Beta 測試版亩歹,完全由 Flutter 構(gòu)建而成匙监,充分展示了 Flutter 新版本提供的全面服務(wù)寡润。
Flutter 2 登陸臺式機、折疊式設(shè)備與嵌入式設(shè)備
除了傳統(tǒng)移動設(shè)備與 Web 平臺之外舅柜,F(xiàn)lutter 也開始為其他設(shè)備類型提供支持。在本文中躲惰,我們將以三位合作伙伴為例致份,聊聊 Flutter 的強大可移植性表現(xiàn)。
首先是 Canonical础拨,我們雙方合作將 Flutter 引入桌面環(huán)境氮块,借此 Canonical 工程師們貢獻的代碼支持 Flutter 在 Linux 上的開發(fā)與部署。Ubuntu 團隊展示了由 Flutter 重寫的全新安裝程序的早期演示效果诡宗。對 Canonical 而言滔蝉,最重要的就是如何在各類硬件配置之上提供穩(wěn)定且令人愉悅的使用體驗。展望未來塔沃,F(xiàn)lutter 將成為 Canonical 構(gòu)建后續(xù)桌面與移動應(yīng)用程序時的默認選項蝠引。
接下來是微軟,軟件巨頭同樣在不斷擴大對 Flutter 的支持蛀柴。除了在 Flutter 當(dāng)中建立更完善的 Windows 支持能力之外螃概,微軟此次同樣宣布將對 Flutter 引擎提供全面支持,借此支持更多新型折疊式 Android 設(shè)備鸽疾。這類設(shè)備將引入新的設(shè)計模式吊洼,相關(guān)應(yīng)用能夠擴展顯示內(nèi)容或利用雙屏特性提供并行體驗。結(jié)合 Surface 工程團隊的博文制肮,他們展示了自己的工作成果并邀請更多參與成員冒窍,希望借 Flutter 之力提升 Surface Duo 及其他同類設(shè)備的體驗質(zhì)量。
最后豺鼻,全球汽車巨頭豐田公司也宣布了相關(guān)計劃综液,著手構(gòu)建由 Flutter 提供支持的車載信息娛樂系統(tǒng),希望借此將最佳數(shù)字體驗引入汽車產(chǎn)品儒飒。使用 Flutter 代表著車載軟件的開發(fā)方式將出現(xiàn)重大變化意乓。之所以選擇 Flutter,是因為豐田看中了其出色的性能與一致性使用體驗约素、快速迭代届良、易于掌握的人機工程學(xué)設(shè)計以及與智能手機相匹配的良好觸控機制。通過使用 Flutter 的嵌入器 API圣猎,豐田得以針對車載系統(tǒng)的獨特需求對 Flutter 做出量身定制士葫。
我們很高興能夠與豐田及其他廠商積極合作,將 Flutter 應(yīng)用于汽車送悔、電視及其他嵌入式設(shè)備慢显。未來幾個月內(nèi)爪模,我們也將繼續(xù)分享更多實際用例。
不斷發(fā)展的 Flutter 生態(tài)系統(tǒng)
目前荚藻,F(xiàn)lutter 與 Dart 已經(jīng)擁有超過 15000 種軟件包屋灌,分別來自 Amazon、微軟应狱、Adobe共郭、阿里巴巴、eBay 以及 Square 等疾呻。除 Lottie除嘹、Sentry 以及 SVG 等關(guān)鍵軟件包之外,sign_in_with_apple岸蜗、google_fonts尉咕、geolocator 以及 sqflite 等 Flutter Favorite 首選軟件包同樣值得關(guān)注。
現(xiàn)在璃岳,我們宣布正式推出 Google Mobile Ads for Flutter 的 Beta 版本年缎。這是一種能夠與 AdMob 與 AdManager 配合使用的全新 SDK,可提供包括橫幅廣告铃慷、插頁廣告晦款、原生廣告與獎勵視頻廣告在內(nèi)的多種廣告格式。此前枚冗,我們一直在與多位主要客戶共同試用此 SDK缓溅,例如南美洲最大的獨立藝術(shù)家音樂平臺 SuaMúsica 等。如今赁温,我們決定開放 Google Mobile Ads for Flutter SDK 以供行業(yè)廣泛使用坛怪。
我們還將對 Flutter 插件做出更新,包括多項核心 Firebase 服務(wù):Authentication, CloudFirestore, Cloud Functions, Cloud Messaging, Cloud Storage 以及 Crashlytics股囊,外加 sound null safety 支持以及對 Cloud Messaging 軟件包的全面更新袜匿。
Dart: Flutter 背后的獨門絕技
如前文所述,F(xiàn)lutter 2 擁有靈活的多平臺與多設(shè)備可移植能力稚疹。而這種輕松過渡至 Web居灯、桌面與嵌入式設(shè)備的優(yōu)勢,在很大程度上要歸功于 Dart——針對多平臺開發(fā)并進行優(yōu)化的谷歌編程語言内狗。
在構(gòu)建應(yīng)用方面怪嫌,Dart 提供一套獨特的功能組合:
穩(wěn)健的可移植表現(xiàn),其編譯器能夠面向移動與臺式機設(shè)備生成高性能的英特爾與 ARM 機器碼柳沙,并為 Web 環(huán)境提供經(jīng)過嚴(yán)格優(yōu)化的 JavaScript 輸出岩灭。所有目標(biāo)皆可使用相同的 Flutter 框架源代碼。
支持有狀態(tài)熱重載的迭代開發(fā)赂鲤,充分支持桌面與移動設(shè)備噪径,同時提供現(xiàn)代 UI 編程中的異步柱恤、并發(fā)模式設(shè)計提供相應(yīng)的語言構(gòu)造。
谷歌級性能水平找爱,可跨越一切平臺實現(xiàn)良好性能表現(xiàn)梗顺,提供 sound null safety 以保證運行時與開發(fā)過程中的 null 約束能力。
從目前來看车摄,還沒有哪種語言能夠像 Dart 這樣將所有功能優(yōu)勢融合起來寺谤。也正因為如此,Dart 成為 GitHub 上發(fā)展速度最快的語言之一练般。
Dart 2.12 現(xiàn)已正式發(fā)布,也是自 2.0 版本之后我們推出的最大規(guī)模發(fā)行版锈候,可充分支持 sound null safety薄料。Sound null safety 有望消除 null 引用引發(fā)的異常,為開發(fā)及運行時提供良好保障泵琳,允許開發(fā)人員明確指定哪些類型中可以包含 null 值摄职。最重要的是,這項功能并非空降落地:您可以按自己熟悉的方式將其逐步添加至代碼內(nèi)获列,而后配合遷移工具實現(xiàn) null 值保護谷市。
此次更新還包含 FFI 穩(wěn)定實現(xiàn),允許您編寫出能夠與基于 C 語言的 API 進行互操作的高性能代碼击孩;由 Flutter 編寫的全新集成化開發(fā)者與分析器工具迫悠;外加眾多性能與體量方面的改進,能夠在無需重新編譯的前提下進一步實現(xiàn)代碼升級巩梢。關(guān)于更多詳細信息创泄,請參閱 Dart 2.12 發(fā)布的公告博文:
Flutter 2:現(xiàn)已發(fā)布
關(guān)于 Flutter 2 還有很多新鮮內(nèi)容可講,但受到本文篇幅所限括蝠,我們無法一一盡述鞠抑。實際上,全部 pull 請求記錄與說明構(gòu)成的文檔長達 200 頁忌警!感興趣的朋友請訪問 Flutter 2 獨立技術(shù)博客搁拙,在這里了解關(guān)于新功能與性能改進的更多信息。
我們還與加拿大屢獲殊榮的設(shè)計團隊 gskinner 合作開發(fā)出新的展示成果——Flutter Folio法绵。Folio 是一款剪貼板應(yīng)用程序箕速,適用于一切設(shè)備平臺。其小屏幕體驗專為內(nèi)容捕捉所設(shè)計朋譬;大屏幕支持允許您立足臺式機與平板電腦以大家熟悉的方式完成編輯操作弧满;Web 體驗則專門針對共享操作開發(fā)而成。這一切量身定制體驗都將共享同一套開源代碼庫此熬,您可以隨時查看并參與貢獻庭呜。
如果您還沒有體驗過 Flutter滑进,請千萬不要錯過它將給您應(yīng)用程序開發(fā)體驗帶來的重大提升。在 Flutter 中募谎,我們還提供一套開源工具包扶关,可通過單一代碼庫構(gòu)建起面向移動、桌面数冬、Web 以及嵌入式設(shè)備的出色應(yīng)用程序节槐,將谷歌級別的質(zhì)量水準(zhǔn)引入您的實際需求場景當(dāng)中。
Flutter 為自由開源項目拐纱,我們期待有更多朋友使用 Flutter 2 構(gòu)建起精美絕倫的開發(fā)成果铜异!
- 譯文標(biāo)題:Flutter 2 來了:專為 Web、移動與臺式機環(huán)境構(gòu)建
- 譯文鏈接:https://www.infoq.cn/article/A1kuPWmvRLZgykVe7qXb
- 原文標(biāo)題:Announcing Flutter 2
- 原文地址:https://developers.googleblog.com/2021/03/announcing-flutter-2.html