我們非常高興在本周發(fā)布了 Flutter 2,。自 Flutter 1.0 發(fā)布至今已有兩年多的時(shí)間,,在如此短暫的時(shí)間內(nèi),我們解決了 24,541 個(gè) issue,合并了來(lái)自 765 個(gè)貢獻(xiàn)者的 17,039 個(gè) PR,。自九月發(fā)布 Flutter 1.22 以來(lái),,我們已解決 5,807 個(gè) issue,合并了來(lái)自 298 個(gè)貢獻(xiàn)者的 4,091 個(gè) PR,。在此特別感謝廣大的貢獻(xiàn)者,,將業(yè)余時(shí)間慷慨地投入到 Flutter 項(xiàng)目的優(yōu)化中。Flutter 2 的杰出貢獻(xiàn)者有 xu-baolin (貢獻(xiàn)了 46 個(gè) PR),、a14n (貢獻(xiàn)了 32 個(gè) PR,;專(zhuān)注于為 Flutter 引入空安全) 和 hamdikahloun (貢獻(xiàn)了 20 個(gè) PR;優(yōu)化了一系列 Flutter 插件),。然而,,為 Flutter 項(xiàng)目做出貢獻(xiàn)的不只有開(kāi)發(fā)者,還有我們負(fù)責(zé)評(píng)審 1,525 個(gè) PR 的眾多 PR 評(píng)審員,,其中包括 hamdikahloun (身兼數(shù)職,!)、CareF 和 YazeedAlKhalaf (年僅 16 歲,!) 等人,。Flutter 是真正的社區(qū)合力之作,如果沒(méi)有問(wèn)題反饋者,、PR 貢獻(xiàn)者和代碼評(píng)審員,,版本 2 便無(wú)法問(wèn)世,是你們帶來(lái)了這一新版本,。 Flutter 2 的發(fā)布也帶來(lái)了許多振奮人心的內(nèi)容,。您可以閱讀圖文《Flutter 2 正式發(fā)布!》,,快速了解 Flutter 2 和 Dart 2.12 中的新增功能,,以及我們的客戶(hù)及合作伙伴是如何使用 Flutter 2 的。我們將在下周的圖文中為大家詳細(xì)介紹如何在生產(chǎn)環(huán)境中使用 Flutter web 穩(wěn)定版 并發(fā)揮其優(yōu)勢(shì),。 下面我們一起來(lái)詳細(xì)了解下 Flutter 2 的新增功能吧,! Web從現(xiàn)在開(kāi)始,F(xiàn)lutter web 的支持已經(jīng)從 Beta 版過(guò)渡到穩(wěn)定階段,。隨著首個(gè)穩(wěn)定版本的發(fā)布,,F(xiàn)lutter 通過(guò)對(duì) web 平臺(tái)的支持,將代碼的復(fù)用性提升到了一個(gè)新高度?,F(xiàn)在,,當(dāng)您平穩(wěn)運(yùn)行 Flutter 應(yīng)用時(shí),可以將 web 作為一個(gè)新的適配方向,。
借助 web 平臺(tái)的諸多優(yōu)勢(shì),,F(xiàn)lutter 為構(gòu)建豐富的交互式 web 應(yīng)用奠定了基礎(chǔ),。我們的首要重點(diǎn)是提升性能并優(yōu)化渲染。除了 HTML 渲染引擎外,,我們還新增了一個(gè)基于 CanvasKit 的渲染引擎,,以及一些如 Link Widget 等特定于 web 的功能,以確保您的應(yīng)用能夠像 web 應(yīng)用一樣在瀏覽器中穩(wěn)定運(yùn)行,。 有關(guān)此 Flutter web 穩(wěn)定版 的更多詳情,,請(qǐng)參閱 Flutter web 發(fā)布文章: 空安全健全的空安全是對(duì) Dart 語(yǔ)言的重要補(bǔ)充,它通過(guò)區(qū)分可空類(lèi)型和不可空類(lèi)型來(lái)進(jìn)一步加強(qiáng)類(lèi)型系統(tǒng),。這使開(kāi)發(fā)者能夠防止 null error 崩潰,,這也是導(dǎo)致應(yīng)用崩潰的常見(jiàn)原因。通過(guò)將空檢查合并到類(lèi)型系統(tǒng)中,,可以在開(kāi)發(fā)期間捕獲這些錯(cuò)誤,,從而防止生產(chǎn)環(huán)境中的崩潰。在包含 Dart 2.12 的 Flutter 2 中,,健全的空安全得到了充分的支持,。要了解更多細(xì)節(jié),請(qǐng)參閱 Dart 2.12 發(fā)布文章: pub.dev 已經(jīng)發(fā)布了 超過(guò) 1,000 個(gè)空安全 package,,包括來(lái)自 Dart,、Flutter、Firebase 和 Material 團(tuán)隊(duì)發(fā)布的數(shù)百個(gè) package,。如果您也是 package 的作者,,請(qǐng)參閱 遷移指南 并著手遷移事項(xiàng)。 桌面設(shè)備在新版本中,,F(xiàn)lutter 對(duì)桌面設(shè)備的支持已經(jīng)進(jìn)入穩(wěn)定版本的前期準(zhǔn)備階段,。也就是說(shuō),您現(xiàn)在可以嘗試將其作為您 Flutter 應(yīng)用的部署目標(biāo): 把它看作最終穩(wěn)定版發(fā)布前的預(yù)覽,,最終穩(wěn)定版本將于今年晚些時(shí)候發(fā)布,。 Flutter 桌面版經(jīng)過(guò)一系列大大小小的優(yōu)化,才達(dá)到現(xiàn)在的質(zhì)量,。我們率先從文本編輯入手,,確保其在每個(gè)支持平臺(tái)上都能令 文本選擇點(diǎn) 等基本功能獲得如原生般的順暢運(yùn)行體驗(yàn),,并能夠 在鍵盤(pán)事件經(jīng)過(guò)處理后將其取消,。在鼠標(biāo)輸入方面,我們也已確保,,當(dāng)處理觸摸輸入以及在 Material 和 Cupertino 設(shè)計(jì)語(yǔ)言的 TextField 和 TextFormField 中添加內(nèi)置上下文菜單,,并 在 ReorderableListView 上提供抓取控點(diǎn) 時(shí),使用高精度定點(diǎn)設(shè)備的拖放事件將立即開(kāi)始,沒(méi)有任何延遲,。另外,,內(nèi)置的上下文菜單已經(jīng)添加至以 Material 和 Cupertino 為設(shè)計(jì)語(yǔ)言的 TextField 及 TextFormField widget 中,ReorderableListView widget 添加了抓取控點(diǎn)功能,。
開(kāi)發(fā)者可以使用 ReorderableListView 輕松移動(dòng)項(xiàng)目,但用戶(hù)需要長(zhǎng)按項(xiàng)目以啟用拖動(dòng)操作,。該設(shè)計(jì)在移動(dòng)設(shè)備上很合理,,但很少有桌面平臺(tái)的用戶(hù)會(huì)想到用鼠標(biāo)長(zhǎng)按某個(gè)項(xiàng)目來(lái)移動(dòng)它,所以新版本提供了一個(gè)適用于鼠標(biāo)或觸摸輸入的抓取控點(diǎn),。按照同樣的思路,,對(duì)于因平臺(tái)而異的慣用功能,新版本提供了一個(gè) 經(jīng)過(guò)升級(jí)的滾動(dòng)條,,可使其與桌面平臺(tái)完美適配,。
更新后的 Scrollbar Widget 為桌面平臺(tái)提供了預(yù)期的相同交互功能,例如支持拇指拖動(dòng),、點(diǎn)擊滾動(dòng)條空白區(qū)域進(jìn)行上下翻頁(yè),,以及將鼠標(biāo)懸停在滾動(dòng)條的任何部位以顯示一個(gè)軌道等。此外,由于滾動(dòng)條可以通過(guò) 新增的 ScrollbarTheme 類(lèi)設(shè)定主題,,您可以根據(jù)您的應(yīng)用對(duì)其外觀和感覺(jué)進(jìn)行個(gè)性化設(shè)計(jì),。 對(duì)于其他桌面平臺(tái)的特定功能,本版本還為 Flutter 應(yīng)用啟用了命令行參數(shù)處理,,這樣一來(lái),您可以通過(guò)在 Windows 文件資源管理器中雙擊鼠標(biāo)等簡(jiǎn)單操作來(lái)打開(kāi)應(yīng)用中的文件,。此外,,我們還努力使 Windows 和 macOS 上的大小調(diào)整操作變得更加流暢,并面向全球用戶(hù)推出了輸入法 (IME) 支持,。
我們還提供了更新的 文檔,,以指導(dǎo)您做好準(zhǔn)備,將應(yīng)用部署到相應(yīng)的操作系統(tǒng)商店中,。您不妨參考一下,,如發(fā)現(xiàn)有任何遺漏,請(qǐng)反饋給我們,。 試用 Flutter 桌面 Beta 版時(shí),,您可以按需切換到 beta 渠道來(lái)進(jìn)行訪問(wèn),并按照 Flutter 文檔上的說(shuō)明 設(shè)置目標(biāo)平臺(tái)的配置標(biāo)記,。此外,,我們還在穩(wěn)定渠道中新增了 Beta 版的快照,。當(dāng)您使用 "flutter config" 啟用其中一個(gè)桌面配置設(shè)置 (如 enable-macos-desktop 時(shí)),您可以直接嘗試使用桌面 Beta 版功能,,而無(wú)需再經(jīng)歷前往 Beta 渠道,、獲取完整的 Beta 版及構(gòu)建工具等漫長(zhǎng)的過(guò)程。您不妨親自嘗試一下,,或把桌面支持作為一個(gè)簡(jiǎn)單的 "Flutter 模擬器",,非常好用。 然而,,如果您選擇繼續(xù)通過(guò)穩(wěn)定渠道使用桌面 Beta 版,,那么您將無(wú)法像切換到 Beta 或開(kāi)發(fā)渠道時(shí)那樣快速獲取新功能或錯(cuò)誤修復(fù),因此,,如果您以 Windows,、macOS 或 Linux 為明確目標(biāo),我們建議您切換到更新速度更快的渠道,。 在開(kāi)發(fā)穩(wěn)定版 Flutter 桌面支持過(guò)程中,,我們深知未來(lái)還有很多工作要做,包括支持原生頂級(jí)菜單集成,、提供如同獨(dú)立平臺(tái)一樣的文本編輯體驗(yàn)和無(wú)障礙功能支持,,以及一般漏洞修復(fù)和性能增強(qiáng)。如果您認(rèn)為桌面平臺(tái)在投入生產(chǎn)之前仍然有一些地方需要完善,,望 不吝賜教,! 平臺(tái)自適應(yīng)應(yīng)用示例: Flutter Folio現(xiàn)在 Flutter 已可在三個(gè)平臺(tái) (Android、iOS 和 web) 上為生產(chǎn)環(huán)境的應(yīng)用提供支持,,還有三個(gè)平臺(tái)仍處于測(cè)試階段 (Windows,、macOS 和 Linux),那么問(wèn)題來(lái)了: 如何開(kāi)發(fā)一款應(yīng)用,,可以良好適應(yīng)多種不同屏幕規(guī)格 (大,、中、小屏幕),、不同輸入模式 (觸控,、鍵盤(pán)和鼠標(biāo)) 和不同慣用設(shè)備 (移動(dòng)、web 和桌面),?為了給自己以及各地的廣大 Flutter 開(kāi)發(fā)者解決這個(gè)問(wèn)題,,Flutter Folio 應(yīng)用應(yīng)運(yùn)而生。 您可將 Folio 視作一個(gè)簡(jiǎn)單的示例應(yīng)用,,幫助您在多個(gè)平臺(tái)上利用單一代碼庫(kù)良好地運(yùn)行應(yīng)用,。"良好運(yùn)行" 是指它能在大、中,、小屏幕上正常顯示,,并能利用觸控、鍵盤(pán)和鼠標(biāo)輸入,,還可適應(yīng)不同平臺(tái)的風(fēng)格,,例如使用 web 上的鏈接、使用桌面設(shè)備上的菜單等等,。我們將此類(lèi)應(yīng)用稱(chēng)為 "平臺(tái)自適應(yīng)應(yīng)用",,因?yàn)檫@類(lèi)應(yīng)用能良好地適應(yīng)所運(yùn)行的任何平臺(tái)。 如需查看如何使應(yīng)用自適應(yīng)平臺(tái),,請(qǐng)參閱 Folio 的源代碼,。未來(lái),希望能有更為深入地探討此主題的文檔和 codelabs 出現(xiàn),。您還可以閱讀和觀看 Alo?s Deniel 關(guān)于該主題的 博文和視頻,。 Google Mobile Ads 發(fā)布 Beta 版除了發(fā)布 Flutter 桌面 Beta 版外,我們也非常高興地發(fā)布了 Google Mobile Ads SDK for Flutter 的公開(kāi) Beta 版,。這是一個(gè)全新插件,,除了原有的疊加格式 (疊加橫幅、插頁(yè)和激勵(lì)視頻廣告),,我們還在其中新增了內(nèi)聯(lián)橫幅及原生廣告,。另外,我們還在此插件中提供了 Ad Manager 和 Admob 支持,,無(wú)論您是何種規(guī)模的發(fā)布商,,這款插件都能滿(mǎn)足您的需求。 在公開(kāi)發(fā)布 Beta 之前,,我們邀請(qǐng)了一些客戶(hù)參與試用這款插件,。許多客戶(hù)都使用了這些新增的廣告格式成功地發(fā)布了應(yīng)用。例如,,Sua Musica (拉丁美洲最大的獨(dú)立藝術(shù)家音樂(lè)平臺(tái),,擁有超過(guò) 15,000 位認(rèn)證音樂(lè)人和一千萬(wàn)活躍用戶(hù)) 使用了 Google Mobile Ads SDK for Flutter 插件發(fā)布了新的應(yīng)用。其廣告展示量增加了 350%,,點(diǎn)擊率增加了 43%,,千次展示收益上漲了 13%。 您此刻就可使用該 插件 了,。在剛結(jié)束的 Flutter Engage 上,,Andrew 和 Zoey 圍繞《如何通過(guò) Flutter 應(yīng)用獲利》介紹了一些 Flutter 應(yīng)用創(chuàng)收策略,以及如何在 Flutter 應(yīng)用中加載廣告,,您可以查看下方視頻了解詳細(xì)內(nèi)容,。此外,我們?cè)?flutter.dev 上創(chuàng)建了一個(gè)新的 Ads 頁(yè)面,,方便您查找所需資源,,如 插件使用指南,,內(nèi)聯(lián)橫幅和原生廣告 codelab,以及疊加橫幅,,插頁(yè)和激勵(lì)視頻廣告 codelab,,歡迎您隨時(shí)查看。更多信息請(qǐng)查看 如何通過(guò) Flutter 應(yīng)用獲利 視頻,。 新增 iOS 功能在不斷提高對(duì)其他平臺(tái)支持的同時(shí),,我們并沒(méi)有將 iOS 拋諸腦后。事實(shí)上,,新版本提供了 178 個(gè)與 iOS 相關(guān)的合并 PR,,其中包括將狀態(tài)恢復(fù) (State Restoration) 引入 iOS 的 23495,應(yīng)開(kāi)發(fā)者需求——不用打開(kāi) Xcode 就可以直接從命令行建立 IPA 的 67781,,以及更新 CocoaPods 版本以配合最新工具的 69809,。此外,我們還在 Cupertino 設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)中添加了一些 iOS 小部件,。 新增的 CupertinoSearchTextField 為 iOS 提供了搜索欄 UI,。 CupertinoFormSection、CupertinoFormRow 和 CupertinoTextFormFieldRow 等 widgets 則利用 iOS 的視覺(jué)美學(xué)簡(jiǎn)化了驗(yàn)證表單字段的生成,。 除了為 iOS 新增功能以外,,我們也在持續(xù)尋求 iOS 和 Flutter 在著色器和動(dòng)畫(huà)方面的 整體性能優(yōu)化。iOS 仍然是 Flutter 的首要平臺(tái),,我們將繼續(xù)致力于為大家?guī)?lái)重要的新功能和性能提升,。 新增 Widget: Autocomplete 和 ScaffoldMessenger新版 Flutter 新增了兩個(gè) Widget,分別是 AutocompleteCore 和 ScaffoldMessenger,。AutocompleteCore 是在您的 Flutter 應(yīng)用中實(shí)現(xiàn)自動(dòng)補(bǔ)全功能所需的基礎(chǔ)功能,。 開(kāi)發(fā)者對(duì)為 Flutter 增加 Autocomplete 功能的呼聲很高,所以我們?cè)谛掳姹局刑峁┝舜斯δ?。您現(xiàn)在即可使用,,如果您想了解該功能的設(shè)計(jì)理念,請(qǐng)參閱 設(shè)計(jì)文檔,。 同樣,,ScaffoldMessenger 可用于處理許多與消息提示 Snackbar 相關(guān)的問(wèn)題,例如,,它可以輕松創(chuàng)建 Snackbar 消息以響應(yīng) AppBar 操作,、創(chuàng)建可在 Scaffold 轉(zhuǎn)換之間持久保存的 Snackbar 消息,并能夠在異步操作完成時(shí)顯示 Snackbar 消息,,即使用戶(hù)已導(dǎo)航至使用不同 Scaffold 的頁(yè)面時(shí)也不例外,。 您只需寫(xiě)一行代碼,即可將所有這些更加便捷的新功能收入囊中,。從現(xiàn)在開(kāi)始,,您可以使用此行代碼來(lái)顯示您的 Snackbar 消息:
如您所想,,其中原理不止于此,您可以觀看 Kate Lovett 發(fā)布的 關(guān)于 ScaffoldMessenger 的精彩視頻 了解詳情,。 通過(guò) "添加到應(yīng)用" 功能創(chuàng)建多個(gè) Flutter在和許多 Flutter 開(kāi)發(fā)者聊天的過(guò)程中,,我們得知大多數(shù)人并非是從零開(kāi)發(fā)一個(gè)全新應(yīng)用,而是會(huì)通過(guò)將 Flutter 添加到現(xiàn)有的 iOS 和 Android 應(yīng)用中來(lái)進(jìn)行使用,。我們將此功能稱(chēng)為 混合編程 (Add-to-App),您可以通過(guò)這種方法,,在保留現(xiàn)有原生代碼庫(kù)的同時(shí),,在兩個(gè)移動(dòng)平臺(tái)間重復(fù)使用 Flutter 代碼。然而,,我們有時(shí)聽(tīng)到采用此方法的開(kāi)發(fā)者們表示,,他們不知如何擺脫只能將第一個(gè)畫(huà)面集成到 Flutter 的限制。Flutter 和原生頁(yè)面交織導(dǎo)致導(dǎo)航狀態(tài)難以維護(hù),,而且在視圖級(jí)別集成多個(gè) Flutter 會(huì)占用大量?jī)?nèi)存,。 過(guò)去,額外 Flutter 實(shí)例的內(nèi)存占用量與第一個(gè) Flutter 實(shí)例相同,。在 Flutter 2 中,,我們將創(chuàng)建額外 Flutter 引擎的靜態(tài)內(nèi)存占用量降低了約 99%,使每個(gè)實(shí)例的占用量大約為 180kB,。 提供該支持的新增 API 目前尚處于預(yù)覽狀態(tài),,在 我們的文檔里,您可以找到通過(guò)使用這種新模式的說(shuō)明和 示例項(xiàng)目,。隨著這一變化的出現(xiàn),,我們強(qiáng)烈建議您在原生應(yīng)用中創(chuàng)建多個(gè) Flutter 引擎實(shí)例。 Flutter Fix當(dāng)任何成熟的框架聚集了擁有龐大代碼庫(kù)的用戶(hù)時(shí),,我們往往需要避免對(duì)框架 API 進(jìn)行任何更改,,以避免破壞日益增多的代碼。隨著超過(guò) 50 萬(wàn)的 Flutter 開(kāi)發(fā)者分布在越來(lái)越多的平臺(tái),,F(xiàn)lutter 2 很快就會(huì)踏入這一行列,。然而,隨著時(shí)間的推移,,為了持續(xù)改進(jìn) Flutter,,我們希望能夠?qū)?API 進(jìn)行重大更改。現(xiàn)在的問(wèn)題是,,如何在不影響開(kāi)發(fā)者的前提下繼續(xù)改進(jìn) Flutter API,。 我們?yōu)榇送瞥隽?Flutter Fix。 Flutter Fix 是一系列功能的組合,。首先,,我們?yōu)?dart 命令行工具新增了一個(gè)名為 "dart fix" 的命令行選項(xiàng),,您可借此尋找棄用 API 列表的所在位置,并了解如何更新調(diào)用這些 API 的代碼,。其次,,F(xiàn)lutter Fix 本身就是個(gè)列表,自版本 2 開(kāi)始便與 Flutter SDK 綁定,。另外,,F(xiàn)lutter Fix 也是一組針對(duì) Visual Studio Code、IntelliJ 和 Android Studio IDE 的新 Flutter 擴(kuò)展程序,,您可借此找到已棄用 API 的相同列表,,單擊鼠標(biāo),輕點(diǎn)旁邊的小燈泡圖標(biāo)即可更改代碼,,完成快速修復(fù),。 舉個(gè)例子,比如您的應(yīng)用具有下面一行代碼:
因?yàn)檫@個(gè)函數(shù)已經(jīng)棄用,,請(qǐng)使用下面的參數(shù)代替:
即使您熟悉和了解很多 Flutter 中已棄用的內(nèi)容,,代碼中需要修改的內(nèi)容越多,就越難修復(fù)所有的內(nèi)容,,也就越容易出現(xiàn)錯(cuò)誤,。人類(lèi)并不擅長(zhǎng)這種重復(fù)性的工作,但計(jì)算機(jī)不一樣,。通過(guò)下面的命令,,您可以看到我們?nèi)绾卧谀恼麄€(gè)項(xiàng)目中進(jìn)行問(wèn)題修復(fù):
如想批量應(yīng)用它們,您亦可以通過(guò)以下代碼輕松實(shí)現(xiàn):
或者,,如果您希望以交互方式在您喜歡的 IDE 中應(yīng)用這些修復(fù),,也可以實(shí)現(xiàn)。 多年來(lái),,我們一直在標(biāo)記已棄用的舊 API,,現(xiàn)在我們制定了一個(gè)策略,明確 何時(shí)真正移除棄用的 API,,而我們率先將其應(yīng)用到了 Flutter 2 之中,。盡管我們尚未捕捉到所有棄用 API,并將其以數(shù)據(jù)形式提供給 Flutter Fix,,但我們會(huì)不斷從之前棄用的 API 中獲取更多內(nèi)容,,并在未來(lái)持續(xù)加入新的重大更改。我們的目標(biāo)是盡全力將 Flutter API 打造的盡善盡美,,同時(shí)保持代碼的及時(shí)更新,。 Flutter DevTools為了明確 DevTools 是用于調(diào)試 Flutter 應(yīng)用的工具,現(xiàn)在我們已將其命名為 Flutter DevTools。此外,,我們還做了很多工作,,讓其可以成為與 Flutter 2 成熟度與質(zhì)量相匹配的版本。 其中有一個(gè)新功能,,可在您尚未啟動(dòng) Flutter DevTools 2 時(shí)幫您鎖定問(wèn)題,,那就是您的 IDE 能夠發(fā)現(xiàn)常見(jiàn)的異常,并在 DevTools 中提出這個(gè)異常,,以助您開(kāi)展調(diào)試,。例如,下面顯示您的應(yīng)用中拋出了一個(gè)溢出異常,,系統(tǒng)在 Visual Studio Code 中提供了一個(gè)在 DevTools 中調(diào)試此問(wèn)題的選項(xiàng),。
按下該按鈕,您即可利用 DevTools 中的 Flutter Inspector 檢查引發(fā)問(wèn)題的 Widget,,以便進(jìn)行修復(fù),。我們今天的操作只是為了解決溢出異常,,但這種處理方法適用于 DevTools 可以解決的各種常見(jiàn)異常,。 在 DevTools 開(kāi)始運(yùn)行后,您可通過(guò)標(biāo)簽上的新錯(cuò)誤標(biāo)識(shí)幫助自己追蹤應(yīng)用中出現(xiàn)的具體問(wèn)題,。
DevTools 的另一個(gè)新功能是能夠輕松發(fā)現(xiàn)所顯示的分辨率低于其實(shí)際分辨率的圖像,,這有助于追蹤應(yīng)用過(guò)大和內(nèi)存占用過(guò)多等情況。若要啟用此功能,,請(qǐng)?jiān)?Flutter Inspector 中啟用 Invert Oversized Images,。
現(xiàn)在,,當(dāng)圖像的實(shí)際分辨率明顯大于其顯示大小時(shí),,系統(tǒng)就會(huì)將其倒置,以便您在應(yīng)用中輕松找到它,。
此外,,為響應(yīng)大量用戶(hù)的要求,除了在 Flutter Inspector 的 Layout Explorer 中顯示有關(guān)彈性布局的詳細(xì)信息外,,我們還添加了顯示固定布局的功能,,可便于您調(diào)試各種布局。
其功能還遠(yuǎn)不止如此,。以下是對(duì) Flutter DevTools 2 其他一些新增功能的總結(jié):
當(dāng)然這并不是全部,。想了解所有相關(guān)更改,,建議您查閱下列公告: Android Studio/IntelliJ Extension我們也為 IntelliJ 系列 IDE 的 Flutter 插件添加了一些適用于 Flutter 2 的新功能。首先,,我們?cè)谄渲行略隽艘粋€(gè)項(xiàng)目向?qū)?,該向?qū)c IntelliJ 中的新向?qū)эL(fēng)格一致。 此外,,如果您正在 Linux 上使用 IntelliJ 或 Android Studio,,針對(duì) 安裝自 Snap Store 的 Flutter SDK 進(jìn)行編程,那么系統(tǒng)便會(huì)將 Flutter snap 路徑添加到已知的 SDK 路徑列表中,。這使得 Flutter snap 用戶(hù)可以更輕松地在 "Settings (設(shè)置)" 中配置 Flutter SDK,。感謝 Marcus Tomlinson 對(duì)此作出的貢獻(xiàn)!
您可以從最近更新公告中了解更多有用信息: Visual Studio Code 擴(kuò)展適用于 Visual Studio Code 的 Flutter 擴(kuò)展也針對(duì) Flutter 2 進(jìn)行了優(yōu)化,,我們首先引入了一些測(cè)試增強(qiáng)功能,例如重新運(yùn)行失敗測(cè)試的能力,。 經(jīng)過(guò)兩年的逐步發(fā)展,,對(duì) Dart 的 LSP (語(yǔ)言服務(wù)器協(xié)議) 支持已經(jīng)成為在 Flutter 擴(kuò)展中將 Dart 分析器集成到 Visual Studio Code 中的默認(rèn)方式。LSP 支持為 Flutter 開(kāi)發(fā)帶來(lái)了許多改進(jìn),,包括在當(dāng)前的 Dart 文件中應(yīng)用特定的所有修復(fù),,以及能夠補(bǔ)全代碼以生成完整函數(shù)調(diào)用 (包括括號(hào)和所需參數(shù)) 的能力。 LSP 支持不僅限于 Dart,,它還支持 pubspec.yaml 及 analysis_options.yaml 文件中的代碼補(bǔ)全,。 這僅僅是近期 Visual Studio Code 適用于 Flutter 的部分?jǐn)U展更新。您可以閱讀下列公告,,了解全部更新內(nèi)容:
DartPad 升級(jí)到支持 Flutter 2如果不提 DartPad,,那我們的工具更新就不能算完整,DartPad 現(xiàn)已更新并支持 Flutter 2,。
現(xiàn)在,,無(wú)需離開(kāi)喜歡的瀏覽器,您就可以體驗(yàn)新的 Flutter 空安全版本,。 生態(tài)系統(tǒng)更新Flutter 開(kāi)發(fā)體驗(yàn)不僅包括框架和工具,;還包括為 Flutter 應(yīng)用提供的各種軟件包和插件。自上一次 Flutter 穩(wěn)定版本發(fā)布以來(lái),,這方面也發(fā)生了很多變化,。例如,我們已在攝像頭和視頻播放器插件之間合并了將近 30 個(gè) PR,,從而大大提高了兩者的質(zhì)量,。如果您在過(guò)去使用這兩種產(chǎn)品時(shí)曾遇到過(guò)問(wèn)題,,那么您應(yīng)該再?lài)L試一次,您會(huì)發(fā)現(xiàn)它們比以前更加強(qiáng)大,。 另外,,如果您是 Firebase 用戶(hù),我非常高興地宣布熱門(mén)插件的產(chǎn)品質(zhì)量已經(jīng)得到了提高并可投入生產(chǎn),,同時(shí)我們還為這些插件提供了空安全支持以及針對(duì) Android,、iOS、web 和 macOS 的 全套參考文檔和常用教程,。這些插件包括:
如果您正在尋找應(yīng)用的崩潰報(bào)告,,您可以考慮使用 Sentry,其已經(jīng)發(fā)布了 適用于 Flutter 應(yīng)用的新 SDK,。
在 Flutter 應(yīng)用中使用 Sentry 的 SDK,,您可以在 Android、iOS 或原生平臺(tái)上發(fā)生錯(cuò)誤時(shí)收到實(shí)時(shí)通知,。查閱 Sentry 文檔 了解更多詳細(xì)信息,。 另外,如果您尚未了解過(guò) Flutter 社區(qū)中的 "Plus" 插件,,您也可著手嘗試,。Flutter 團(tuán)隊(duì)最初開(kāi)發(fā)的許多熱門(mén)插件均由此衍生而來(lái),我們已在 Plus 插件中添加了空安全支持和對(duì)其它平臺(tái)的支持,,并已著手開(kāi)始解決 flutter/plugins 庫(kù)中的相應(yīng)問(wèn)題,。這些插件包括:
目前,,與 Flutter 兼容的 package 和插件數(shù)量超過(guò) 15,000 個(gè),,這會(huì)讓人很難找到那些值得優(yōu)先考慮的軟件包和插件。因此,,我們發(fā)布了 Pub 分值 (靜態(tài)分析評(píng)分),、人氣排名、喜愛(ài)度,,若軟件包質(zhì)量出眾,,我們會(huì)為其打上 "Flutter Favorite" 的特殊標(biāo)記。為與 Flutter 2 適配,,我們已在 Favorite 列表中添加了幾個(gè)新軟件包:
祝賀這些軟件包的作者,!如果您尚未了解這些軟件包或 列表中的其它軟件包,建議您著手開(kāi)始了解,。 最后同樣也是很重要的一點(diǎn),,如果軟件包作者或用戶(hù)有興趣了解最新版本的軟件包是否適用于最新版本的 Flutter,可以查看 Codemagic 的新 pub.green 網(wǎng)站以了解詳情,。 Codemagic 發(fā)布了一個(gè)網(wǎng)站 pub.green 用來(lái)展示 package 和近期 Flutter 版本的兼容性結(jié)果 您可在 pub.green 網(wǎng)站上測(cè)試 pub.dev 上可用的 Flutter 和 Dart 軟件與不同 Flutter 版本的兼容性,。了解更多信息,推薦查閱 CodeMagic 團(tuán)隊(duì)的公告博文。 重大變更 我們?yōu)?Flutter 2 做了如下重大變更,,您可利用 "dart fix" 命令自動(dòng)緩解其中的許多內(nèi)容:
總結(jié) 最后,,我想代表 Google Flutter 團(tuán)隊(duì)全體成員向開(kāi)發(fā)者們說(shuō)一句謝謝!感謝你們?cè)谶^(guò)去的兩年里推出了超過(guò) 15 萬(wàn)款 Flutter 應(yīng)用,,我們整理了一些團(tuán)隊(duì)喜歡的 Flutter 應(yīng)用,,在 Flutter Engage 主題演講 上播放了這段視頻,獻(xiàn)給各位開(kāi)發(fā)者和社區(qū),。 如果沒(méi)有各位開(kāi)發(fā)者們對(duì)自己構(gòu)建的 Flutter 應(yīng)用的持續(xù)支持和熱忱,,這個(gè)具備全球活力的開(kāi)發(fā)者社區(qū)就不可能成為現(xiàn)實(shí),我們非常期待看到您接下來(lái)的作品,! |
|
來(lái)自: 丹楓無(wú)跡 > 《待分類(lèi)》