作者 / Chris Sells, Product Manager, Flutter developer experience
我們很高興推出支持 iOS 14 和 Android 11 的最新版 Flutter。Flutter 1.22 基于之前的版本更上一層樓,繼續(xù)助力開發(fā)者基于一個代碼庫為多個平臺打造快速、美觀的用戶體驗。我們的季度穩(wěn)定版本中囊括了最新功能、性能改進和問題修復(fù),且適用于多樣的生產(chǎn)環(huán)境。
由于本季度是新版移動操作系統(tǒng)的發(fā)布季,因此這一版本側(cè)重于確保 Flutter 能夠有效支持 Android 11 和 iOS 14。針對這兩種操作系統(tǒng)的更新涉及大量的底層工作,以符合最新版 SDK 的規(guī)范,并確保所有功能都能通過我們廣泛的測試套件中的測試。針對 iOS 14,此版本包含了對新版 Xcode 12 和新圖標(biāo)的支持,以及對 iOS 14 的新功能輕 App (App Clips) 的預(yù)覽支持。針對 Android 11,此更新支持新的屏幕類型 (如挖孔屏和瀑布屏),以及在調(diào)出軟鍵盤時可以提供更流暢的動畫效果。
此版本的發(fā)布距我們 1.20 版本的發(fā)布僅有兩個月時間,因此發(fā)布間隔比大多數(shù)版本都短。但在如此有限的時間內(nèi),我們解決了 3,024 個議題 (issue),并且合并了來自 197 位貢獻者的 1,944 個 PR。其中有 114 位 (58%) 來自社區(qū),并貢獻了 271 個 PR。a14n 是最突出的個人貢獻者,他再次以 20 個 PR 登上我們的杰出貢獻者名單榜首,他貢獻的大多數(shù) PR 旨在支持 Flutter 中的空安全 (敬請期待更多即將發(fā)布的更新)。
除了對新版移動操作系統(tǒng)的支持以外,我們還有很多其他消息要與您分享,包括針對 Android 呼聲最高的功能之一 "狀態(tài)恢復(fù)" 的預(yù)覽、一整套新的 Material 按鈕、可與熱重載配合使用的全新國際化與本地化支持、新版 Navigator、穩(wěn)定版 Platform Views (Google Maps 和 WebView 插件的基礎(chǔ)),以及可以在代碼中設(shè)置的開關(guān),用以改善高刷新率顯示屏設(shè)備上的滾動效果。我們還提供了一款新工具,可用于剖析應(yīng)用大小并確保您所構(gòu)建的插件僅支持您要支持的平臺。
支持 iOS 14
每當(dāng)廠商發(fā)布新版移動操作系統(tǒng)時,我們都會對其進行徹底測試,以查找會影響 Flutter 及其工具的兼容性問題或變更。
為了適配 iOS 14,我們對 Flutter 進行了多項更改,以確保其功能可以滿足開發(fā)者的需求:
Xcode 12 需要 iOS 9.0 或更高版本,因此我們的默認(rèn)模板的默認(rèn)系統(tǒng)版本從 8.0 提高到 9.0
iOS 14 帶來的崩潰和字體渲染問題已在 Flutter 1.22 中得到修復(fù)
自 Flutter 1.20.4 起,部署到物理設(shè)備的問題已得到解決
應(yīng)用訪問剪貼板時會顯示相關(guān)使用通知,這項新策略在 Flutter 應(yīng)用中曾引發(fā)虛假通知,該問題已在 Flutter 1.20.4 中得到修復(fù)
禁止在 iOS 14 設(shè)備上運行調(diào)試應(yīng)用,但在調(diào)試過程中運行應(yīng)用除外
針對本地調(diào)試的 Flutter 應(yīng)用,有關(guān)網(wǎng)絡(luò)安全的新策略會使 iOS 14 顯示一次性確認(rèn)對話框 (僅針對開發(fā)中的應(yīng)用,不適用于已發(fā)布的 Flutter 應(yīng)用)
綜上所述,要使您的 Flutter 應(yīng)用適配 iOS 14,我們強烈建議您立即使用 Flutter 1.22 重新構(gòu)建應(yīng)用,然后將其發(fā)布至 App Store,以確保您的 iOS 14 用戶獲得最佳體驗。
有關(guān) Flutter 適配 iOS 14 的更多詳細信息,包括一些 Add-to-App (將 Flutter 集成至現(xiàn)有應(yīng)用)、深鏈接和通知考量因素,請參閱 Flutter 的 iOS 14 文檔。
-
Flutter 的 iOS 14 支持
希望我們在工具和 SDK 支持方面所做的工作能夠幫助您專注于最關(guān)鍵的任務(wù): 充分利用 iOS 14 的新特性。
其中一項特性就是更新了對 iOS 新版 SF Symbols 字體的支持,為此,我們也相應(yīng)地更新了 cupertino_icon package。將 cupertino_icons 依賴項更新到新的 1.0 主版本后,現(xiàn)有的 CupertinoIcons 調(diào)用將自動映射為新樣式。如果將 cupertino_icons 1.0 與 Flutter 1.22 結(jié)合使用,那么通過 CupertinoIcons API,您將能夠獲得約 900 個新圖標(biāo)。
-
cupertino_icon package
-
CupertinoIcons
https://api.flutter.cn/flutter/cupertino/CupertinoIcons-class.html
您可以在 cupertino_icons 預(yù)覽頁面中查看完整的圖標(biāo)列表,也可以參閱 flutter.dev 上的遷移詳情頁。
針對 iOS 14,您可以使用 Flutter 嘗試的另一項功能是 App Clips,它是 iOS 14 的一項新增功能,支持以快速、免安裝的方式執(zhí)行 10MB 以下的輕量版本應(yīng)用。在 Flutter 1.22 版中,我們提供了使用 Flutter 構(gòu)建輕 App 的功能預(yù)覽。
-
App Clips
△ 使用 Flutter 構(gòu)建的輕 App 體驗
有關(guān)如何使用 Flutter 構(gòu)建輕 App 的更多詳細信息,請參閱技術(shù)文檔。您也可以參考這一簡單的示例項目。
-
技術(shù)文檔: 添加 iOS App Clip 支持
https://flutter.cn/docs/development/platform-integration/ios-app-clip
-
示例項目
Android 11
此版本 Flutter 的發(fā)布與 Android 11 的發(fā)布時間也剛好契合。我們更新了 Flutter 框架和引擎,以支持最新版 Android 系統(tǒng)中引入的兩項新特性。
第一,F(xiàn)lutter 現(xiàn)在可以提供安全邊襯區(qū),以支持 Android 設(shè)備的異形屏幕,包括劉海屏、挖孔屏和瀑布屏。
通過使用 MediaQuery 和 SafeArea API,您可以確保將活動的界面和交互元素放置在設(shè)備顯示屏的無遮擋區(qū)域內(nèi)。另外,您需要避免在瀑布屏邊緣區(qū)域內(nèi)設(shè)置手勢檢測,從而避免誤觸問題。
-
MediaQuery
https://api.flutter.cn/flutter/widgets/MediaQuery-class.html
-
SafeArea
第二,F(xiàn)lutter 應(yīng)用內(nèi)顯示軟件鍵盤時的動畫已經(jīng)可以與 Android 11 實現(xiàn)同步。
△ 請注意左側(cè)懸浮操作按鈕 (FAB) 的同步位移
Issue #19279 由來己久,即系統(tǒng)鍵盤的顯示/隱藏動畫與 Flutter 的邊襯區(qū)一直無法同步。這一問題在 Android 11 中已得到解決。
這里做一則關(guān)于 Android 嵌入 API 的說明。去年,隨著 Flutter 1.12 版的發(fā)布,我們推出了一套適用于 Android 系統(tǒng)的新版 Flutter 引擎和 Flutter 插件 API。我們打造了這些 API 的 v2 版本,以更好地支持 Android 平臺的 Add-to-App 用戶。一年后,我們有超過 80% 的 Android 插件使用了新版 Android API。自 1.22 起,我們將棄用較舊的 v1 版本 API。
如果您仍在使用 Android v1 API,那么將存在如下問題:
新創(chuàng)建的插件將不再適配 v1 API
Flutter 工具的 —no-enable-android-embedding-v2 配置標(biāo)記已移除,現(xiàn)已作為默認(rèn)行為
仍在使用 v1 API 的舊版應(yīng)用在構(gòu)建時會顯示棄用警告,并提供支持新版 Android 插件 API 的文檔入口
同時,如果您仍有基于 v1 Android API 的 Flutter 應(yīng)用,該應(yīng)用仍然可以運行。但是,您可能會逐漸遇到僅適用于 v2 API 的新版插件,v1 Android API 則無法使用。有關(guān)更多詳細信息,請參閱重大變更文檔。
更加豐富的按鈕樣式
△ 一整套新的 Material Design 按鈕
現(xiàn)有的 Flutter 按鈕雖然美觀,但并不易用,尤其是在需要自定義主題時。此外,Material 規(guī)范也已經(jīng)擴充包含了許多全新樣式的按鈕。
-
更新 Material 按鈕及其主題
https://files.flutter-io.cn/sources/flutter-design-docs/material-button-system-updates.pdf
為使 Flutter 緊隨 Material 指南的變更步伐,我們很高興地宣布 Flutter 1.22 中加入了一整套全新的按鈕。
相比就地嘗試和改進現(xiàn)有的按鈕類及其主題,這個 PR 引入了新的替換按鈕 widget 和主題。這項提議不但使我們免于因維護既有類而踏入向后兼容性的迷宮,還使 Flutter 遵守了 Material Design 指南中對按鈕組件的全新命名規(guī)則。
-
PR59702
-
Material Design 指南: 按鈕
新主題遵循 Flutter 最近對新 Material widget 采用的 "規(guī)范化" 模式。如果您想通過示例來上手體驗,可以參見 DartPad 中的這個絕佳示例。這并不屬于重大變更,因為 FlatButton、OutlineButton、RaisedButton、ButtonBar、ButtonBarTheme 和 ButtonTheme 的語義并未發(fā)生改變。您可以根據(jù)喜好將舊按鈕與新按鈕混合搭配使用。
-
DartPad 中的示例
新的國際化和本地化支持
自發(fā)布以來,F(xiàn)lutter 就提供了對應(yīng)用進行國際化 (i18n) 和本地化 (l10n) 所需的核心功能。但在最新版本中,我們將推薦的最佳做法直接整合進了工具當(dāng)中,甚至實現(xiàn)了熱重載支持,可以在您添加新的本地化信息時更新您的應(yīng)用。
如果您想了解有關(guān) Flutter 本地化支持的更多詳細信息,包括本地化的消息,以及含參數(shù)、日期、數(shù)字和貨幣的消息,請閱讀 Flutter 國際化用戶指南。
此外,如果您對國際化和本地化感興趣,那么您可能同樣有興趣了解舊的純文本 ASCII 無法支持的字符串,例如 Unicode 和表情符號 (emoji)。最近,Dart 團隊發(fā)布了 characters package,可以幫助開發(fā)者處理 Unicode (擴展) 字形集。這個 package 可解決諸如如何將類似于 "A ???? text in English" 的字符串正確地縮短至前 15 個字符一類的問題。使用 String 類時,縮短的結(jié)果是 "A ???? text in",僅含 12 個用戶可感知字符。而使用 characters package 則會得到正確的結(jié)果: "A ???? text in Eng"。
-
characters package
基于 PR59267,F(xiàn)lutter 將使用 characters package 來正確處理這些復(fù)雜字符。例如,當(dāng)使用具有 maxLength 限制的 TextField 時,諸如 ???????? ?? 的字符現(xiàn)在可以正確地計為單個字符。另外,基于 PR59620,characters package 在 Flutter 所在的項目中均自動可用,無需手動添加。希望這種方案可以使處理來自所有語言區(qū)域的各種字符串變得更加容易。有關(guān) characters package 的更多詳細信息,請參閱《如何正確處理 Dart 字符串》。
-
PR59267
-
PR59620
-
如何正確處理 Dart 字符串
https://medium.com/dartlang/dart-string-manipulation-done-right-5abd0668ba3e
可正式使用的 Google Maps 和 WebView 插件
Flutter 團隊在將某項功能標(biāo)記為 "生產(chǎn)就緒" 前會非常謹(jǐn)慎,并親自完成全面的測試。對于 google_maps_flutter 和 webview_flutter 插件而言,決斷因素一直是底層的 Platform Views 實現(xiàn),該實現(xiàn)支持將 Android 和 iOS 系統(tǒng)的原生界面組件托管在 Flutter 應(yīng)用中。我們很高興地宣布,我們在此版本的 Flutter 中對框架的基礎(chǔ)進行了充分強化,足以將這兩個插件標(biāo)記為 "生產(chǎn)就緒"。
-
google_maps_flutter
-
webview_flutter
-
Platform Views
http://flutter.cn/docs/development/platform-integration/platform-views
△ 托管 flutter.dev 的 webview_flutter 插件
在 Flutter 1.22 中,我們新增了備選的 Platform Views 實現(xiàn),修復(fù)了 Android 視圖所有已知的鍵盤和無障礙問題。此外,該版本還支持 Android API 19 及更高級別 (此前曾要求 API 級別 20)。我們還在 iOS 上進行了線程改進,使 Platform Views 更為高效可靠 (并且您不再需要將 io.flutter.embedded_views_preview 標(biāo)記添加到 iOS Info.plist 中)。
-
Android 視圖所有已知的鍵盤和無障礙問題
webview_flutter 插件支持新的 Android Platform Views 模式,但目前需要手動啟用。當(dāng)該功能在更廣泛的社區(qū)中得到更多使用后,我們會在未來版本中默認(rèn)啟用它。
Google Maps 和 WebView 插件已經(jīng)從 Platform Views 的改進中受益。如果您想使用 Platform Views 來托管 iOS 或 Android 中的原生界面組件,可以前往這里了解相關(guān)方法。
-
使用 Platform Views 在 Flutter 應(yīng)用中托管原生 Android 和 iOS 視圖
https://flutter.cn/docs/development/platform-integration/platform-views
Navigator 2.0
如果您曾在 Flutter 應(yīng)用中使用過導(dǎo)航,那么您可能已經(jīng)注意到核心數(shù)據(jù)結(jié)構(gòu) (即用戶所瀏覽的頁面堆棧) 是對您隱藏的。要對其進行管理,您需調(diào)用 Navigator.pop() 或 Navigator.push()。舉例來說,假設(shè)您想在首頁上顯示一系列 widget,用戶點按一個 widget 后轉(zhuǎn)到呈現(xiàn)該顏色的詳細信息頁面 (如下圖所示)。
這兩個屏幕可以采用如下方式實現(xiàn):
class ColorListScreen extends StatelessWidget {
使用最簡單的 Navigator 1.0 做法,即可通過看起來非常簡單的方式在這兩個屏幕之間導(dǎo)航:
class _ColorAppState extends State<ColorApp> {
只需調(diào)用 Navigator.push() 即可將某一頁面推入首頁的上方,從而創(chuàng)建包含兩個頁面的堆棧。但與通過 ColorListScreen 的 build 方法創(chuàng)建的一系列 Containers 不同的是,該堆棧將對您隱藏。而且由于堆棧被隱藏,在其他場景中將難以對其進行管理,例如處理由原生嵌入、網(wǎng)址或 Android intent 等提供的初始路由中包含的深鏈接。管理同一頁面的不同排列形成的嵌套路由時也十分困難。
通過使頁面堆??梢?,Navigator 2.0 有效解決了上述乃至更多問題。以下是在相同的 ColorListScreen 和 ColorScreen 之間導(dǎo)航的新示例:
class _ColorAppState extends State<ColorApp> {
該應(yīng)用顯式創(chuàng)建了 Navigator,并為其提供了代表完整堆棧的頁面列表。我們創(chuàng)建一個空的 _selectedColor 來表示尚未選擇任何顏色,因此我們最初不顯示 ColorScreen。當(dāng)用戶選擇一種顏色時,我們將照常調(diào)用 setState() 以向 Flutter 指示您需要再次調(diào)用 build() 方法,進而創(chuàng)建頂部為 ColorScreen 的堆棧。
您可以在 OnPopPage 回調(diào)中更新狀態(tài),例如,如果用戶執(zhí)行了 pop (彈出棧頂元素) 操作,則表示他們已 "取消選擇" 當(dāng)前顏色,因此我們不再需要顯示該頁面。
Navigator 2.0 看起來與 Flutter 的其余部分相似,這種設(shè)計是有意為之——此版本為聲明式導(dǎo)航,而不同于 Navigator 1.0 版本的命令式導(dǎo)航。這種設(shè)計旨在統(tǒng)一導(dǎo)航與 Flutter 的其余部分之間的模型,以便在解決問題的同時添加新的功能。實際上,本例較為簡略,只能對 Navigator 2.0 提供粗淺的說明。如需了解詳細信息,強烈推薦您參閱有關(guān) Flutter 中的聲明式導(dǎo)航和路由的這篇文章。
-
文章: 了解 Flutter 的全新導(dǎo)航和路由系統(tǒng)
https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade
另外,您對 Navigator 1.0 的現(xiàn)有使用仍將有效,在短期內(nèi)不會被移除。如果您喜歡該模型,則可以一如既往地使用該版本。但如果您試用了 Navigator 2.0,我們相信您會喜歡上這一全新版本。
預(yù)覽: 適用于 Android 的狀態(tài)恢復(fù)
此版本支持 Android 的狀態(tài)恢復(fù)(State Restoration),歡迎大家試用這一新增功能。這是我們的熱門功能之一,獲得了 217 次點贊!
-
保存界面狀態(tài)
https://developer.android.google.cn/topic/libraries/architecture/saving-states
-
應(yīng)用被操作系統(tǒng)終止后實例狀態(tài)未保存
對于不熟悉狀態(tài)恢復(fù)需求的用戶: 移動操作系統(tǒng)可能會終止后臺應(yīng)用以回收資源供前臺應(yīng)用使用。發(fā)生這種情況時,操作系統(tǒng)會通知該應(yīng)用即將被終止以便其快速保存界面狀態(tài),從而在用戶切換回該應(yīng)用時能夠恢復(fù)。正確實現(xiàn)該操作后,既能為用戶提供無縫體驗,也可以更好地利用設(shè)備資源。Flutter 此前尚不支持狀態(tài)恢復(fù),因為在不具備框架支持的情況下很難正確地實現(xiàn)狀態(tài)恢復(fù)。正因如此,我們很高興能夠在 Android 平臺中提供此功能的基礎(chǔ)實現(xiàn)。
下面是一個恢復(fù) Flutter Counter 應(yīng)用狀態(tài)的非常簡單的示例:
class CounterState extends State<RestorableCounter> with RestorationMixin {
簡而言之,每個 widget 都有一個存儲分區(qū),該存儲分區(qū)使用唯一 ID 注冊到 RestorationMixin。通過使用 RestorableProperty 類型 (如此例使用的 RestorableInt) 存儲特定于界面的數(shù)據(jù),并向狀態(tài)恢復(fù)功能注冊該數(shù)據(jù),即可在 Android 終止應(yīng)用前自動存儲數(shù)據(jù),并在應(yīng)用恢復(fù)運行時恢復(fù)數(shù)據(jù),就是這么簡單。所有以 Restoration* 類型存儲的數(shù)據(jù) (如 RestorableInt、RestorableString 和 RestorableTextEditingController,不勝枚舉) 都能被恢復(fù)。而且,如果我們未能覆蓋您想要恢復(fù)的類型,您也可以通過擴展 RestorableProperty<T> 來創(chuàng)建自己的類型。
-
RestorationMixin
https://api.flutter.cn/flutter/widgets/RestorationMixin-mixin.html
-
RestorableProperty
https://master-api.flutter-io.cn/flutter/widgets/RestorableProperty-class.html
-
RestorableProperty<T>
https://api.flutter.cn/flutter/widgets/RestorableProperty-class.html
為了自動測試狀態(tài)恢復(fù),我們?yōu)?WidgetTester 添加了一個新的 restartAndRestore API。要進行手動測試,最簡單的方法是在 Android 設(shè)備上啟動已啟用狀態(tài)恢復(fù)功能的 Flutter 應(yīng)用,在 Android 的開發(fā)者設(shè)置中打開 "Don’t keep activities",運行 Flutter 應(yīng)用并將其置于后臺,然后再切換回該應(yīng)用。此時,Android 已終止并恢復(fù)您的應(yīng)用,屆時您可以檢查是否一切正常。
雖然我們很高興為您提供狀態(tài)恢復(fù)的預(yù)覽版本,但還有更多工作待完成。例如,狀態(tài)恢復(fù)不僅適用于 Android,iOS 應(yīng)用也將從中受益。此外,我們也在致力于更新 Flutter widget,以在恢復(fù)時保持其狀態(tài)。我們已經(jīng)在 Scrollable 類中提供了支持,例如 ListView 和 SingleChildScrollView (用于記住用戶的滾動位置) 和 TextFields (用于恢復(fù)用戶輸入的文本),并且我們計劃將這些支持?jǐn)U展至其他 widget。
但是,我們目前尚未為導(dǎo)航 (包括 Navigator 1.0 和 2.0) 添加關(guān)鍵恢復(fù)支持,這也是我們暫時稱其為預(yù)覽版本的原因。這意味著應(yīng)用暫時無法恢復(fù)用戶所在位置。該功能的測試版即將在 Flutter 的下一個穩(wěn)定版本中正式發(fā)布。
預(yù)覽: 在輸入頻率與顯示刷新率不匹配情況下提供平滑的滾動效果
Flutter 團隊與 Google 內(nèi)部合作伙伴密切合作,在輸入頻率與顯示刷新率不同的情況下顯著提高了滾動性能。例如,Pixel 4 輸入頻率為 120hz,而顯示屏刷新率為 90hz。在滾動屏幕畫面時,這種不匹配會導(dǎo)致性能下降。使用新的 resamplingEnabled 標(biāo)記,您可以利用我們在 Flutter 中實現(xiàn)的性能改進解決此問題:
void main() {
啟用此標(biāo)記后,滾動屏幕畫面時的掉幀率最多可以降低 97%,具體取決于所涉及的頻率差。在確定這一配置能夠提供最佳體驗后,我們計劃在未來的版本中默認(rèn)啟用此標(biāo)記。
全新的統(tǒng)一 Dart 開發(fā)者工具
與往常一樣,對 Flutter 的更新不僅限于引擎和框架,還包括工具方面的更新。Flutter 1.22 中包含新版 Dart (2.10),以及非常實用的新 dart 命令行工具。
Dart 之前有許多小巧的開發(fā)者工具 (例如,用于格式化的 dartfmt 和用于代碼分析的 dartanalyzer)。Dart 2.10 中新提供了統(tǒng)一的 dart 開發(fā)者工具,與 flutter 工具非常相似。
自新版 Flutter 1.22 SDK 起,<flutter-sdk>/bin 文件夾 (可能在您的 PATH 位置) 中將同時包含 flutter 和 dart 命令。有關(guān)更多詳細信息,請參閱 Dart 2.10 的發(fā)布文章。
應(yīng)用體積分析工具
Flutter 1.22 還帶來了新的輸出應(yīng)用體積分析的實用工具。此工具可以幫助分析 Flutter 并判斷應(yīng)用尺寸構(gòu)成是否隨時間變化。
您可以通過將 --analyze-size 標(biāo)記傳遞給以下任何命令來使用該工具收集分析所需的數(shù)據(jù):
- flutter build apk
- flutter build appbundle
- flutter build ios
- flutter build linux
- flutter build macos
- flutter build windows
在構(gòu)建 Flutter 輸出工件時使用此標(biāo)記將打印工件大小及組成的摘要。其中包括原生代碼、資源,甚至包括已編譯的 Dart 代碼的軟件包級細分情況。
△ Flutter Gallery 發(fā)布版本 APK 的細分示例
此摘要有助于快速識別應(yīng)用軟件包中的尺寸熱點。此外,收集到的數(shù)據(jù)還可作為 JSON 文件用于 Dart DevTools,您可以按照 Flutter 文檔上的說明進一步瀏覽應(yīng)用的內(nèi)容、查明大小問題以及比較兩個不同 JSON 文件之間的差異。加載 JSON 文件后會出現(xiàn)一個界面,其中提供了應(yīng)用尺寸情況的樹狀圖。
-
使用應(yīng)用尺寸工具
△ Dart DevTools 中的 APK 細分示例
更多有關(guān)您可以使用應(yīng)用尺寸工具執(zhí)行的操作,請參閱文檔: 使用應(yīng)用尺寸工具。
-
使用應(yīng)用尺寸工具
預(yù)覽: 在 DevTools 中更新了 Network 頁面
此版本中的另一項 DevTools 預(yù)覽功能是,用戶能夠在 Network 標(biāo)簽中查看 HTTP 和 HTTPs 響應(yīng)正文。
要啟用此功能,請確保通過 flutter channel dev 和 flutter upgrade 命令進入 Flutter dev 渠道。
此外,對于網(wǎng)絡(luò)流量較大的應(yīng)用,我們提供了搜索和篩選功能。
有關(guān) Network 標(biāo)簽的文檔,請參閱使用網(wǎng)絡(luò)視圖 (Network View) 的說明。
-
使用網(wǎng)絡(luò)視圖
IntelliJ 中托管的 DevTools Inspector 標(biāo)簽
一段時間以來,我們一直在維護著某些 Flutter 工具的兩個副本,例如 IntelliJ 中的 Inspector 窗格和 Dart DevTools 中的 Inspector 標(biāo)簽。這不僅降低開發(fā)速度,因為我們必須維護兩個代碼庫,也造成某些功能 (例如 Layout Explorer) 尚未能納入到 IntelliJ 插件當(dāng)中。因此,為了同時解決這兩個問題,我們現(xiàn)在提供直接在 IntelliJ 內(nèi)部托管 Dart DevTools 的 Inspector 標(biāo)簽的功能。
請注意新出現(xiàn)的 Layout Explorer,您可以在代碼旁使用該功能。要啟用此選項,請使用 Preferences > Languages & Frameworks > Flutter > Enable embedded DevTools inspector。
Visual Studio Code 中的輸出鏈接得到改進
對于所有 Flutter 開發(fā)者而言,在終端或堆棧分析結(jié)果中查看錯誤輸出并繼續(xù)解決問題都是一項必不可少的例行工作。在 Visual Studio Code 的最新版本 Flutter 擴展中,現(xiàn)已能夠正確解析這些鏈接,使您可以直接在輸出結(jié)果中使用它們。
這項功能看似微不足道,卻已獲得了非常積極的初步反饋。
與往常一樣,我們在工具方面的變更不勝枚舉,謹(jǐn)建議您參閱以下發(fā)布內(nèi)容來了解相關(guān)詳細信息:
-
Dart DevTools - 0.9.0
https://groups.google.com/g/flutter-announce/c/UxMv8MzE_uo/m/ED539pi2AAAJ
-
Dart DevTools - 0.9.1
-
Dart DevTools - 0.9.3
-
Flutter IntelliJ Plugin M48.1 版本
https://groups.google.com/g/flutter-announce/c/nvgDi3RLAUE/m/Fx4Ze0vrBAAJ
-
Flutter IntelliJ Plugin M49 版本
-
Flutter IntelliJ Plugin M50 版本
https://groups.google.com/g/flutter-announce/c/u0zU6zv3o44/m/2y0JsX1_AwAJ
-
VS Code 擴展程序 v3.14.0
-
VS Code 擴展程序 v3.15.0
精彩案例: EasyA
EasyA 是一款訂閱應(yīng)用,為適齡學(xué)生搭建了通過即時通訊與優(yōu)秀教師溝通的平臺,該應(yīng)用使用 Flutter 編寫。這款應(yīng)用近日被 Apple 推薦為每日精選應(yīng)用。
-
EasyA
-
每日精選: EasyA
今年年初,學(xué)校紛紛啟動了在線課程,我們需要快速發(fā)布這款教學(xué)應(yīng)用來為學(xué)生提供幫助。Flutter 驚人的開發(fā)速度使我們能夠針對 iOS 和 Android 平臺實現(xiàn)優(yōu)秀的設(shè)計,而且還支持發(fā)布到 web 平臺,這有助于我們及時應(yīng)對停課的局面!這在以前是無法想象的。由于 Flutter 支持同時針對所有三個平臺進行開發(fā),我們能夠高效地共享代碼,并最為充分地利用我們的小型開發(fā)團隊。
— Phil Kwok,EasyA 聯(lián)合創(chuàng)始人
重大變更
與往常一樣,我們試圖將重大變更的數(shù)量降至最低。Flutter 1.22 版本的重大變更列表如下:
-
56413 - 如果指定的 Rect 已經(jīng)可見,則阻止 viewport.showOnScreen 滾動窗口。
https://github.com/flutter/flutter/pull/56413
https://docs.google.com/document/d/1BZhxy176uUnqOCnXdnHM1XetS9mw9WIyUAOE-dgVdUM/edit?usp=sharing
-
62395 - [gen_l10n] 默認(rèn)生成合成軟件包。
-
62588 - 進一步減少構(gòu)建路線。
總結(jié)
Flutter 1.22 穩(wěn)定版在上一版本發(fā)布之后很快問世,其中包含了諸多新特性,本篇文章未能一一列舉。我們希望此版本可以幫助您為 iOS 和 Android 開發(fā)出優(yōu)秀的應(yīng)用,我們對您將在應(yīng)用商店中發(fā)布的產(chǎn)品充滿期待!感謝您的支持——Flutter,為開發(fā)者而打造。
歡迎大家在評論區(qū)多多分享功能需求和使用感想,讓我們一起打造更棒的 Flutter!