Flutter 1.22 發(fā)布 | 支持 iOS 14 和 Android 11,以及更多新功能

作者 / Chris Sells, Product Manager, Flutter developer experience

我們很高興推出支持 iOS 14 和 Android 11 的最新版 Flutter。Flutter 1.22 基于之前的版本更上一層樓笨农,繼續(xù)助力開發(fā)者基于一個代碼庫為多個平臺打造快速就缆、美觀的用戶體驗帖渠。我們的季度穩(wěn)定版本中囊括了最新功能、性能改進和問題修復竭宰,且適用于多樣的生產環(huán)境空郊。

由于本季度是新版移動操作系統(tǒng)的發(fā)布季,因此這一版本側重于確保 Flutter 能夠有效支持 Android 11 和 iOS 14切揭。針對這兩種操作系統(tǒng)的更新涉及大量的底層工作狞甚,以符合最新版 SDK 的規(guī)范,并確保所有功能都能通過我們廣泛的測試套件中的測試廓旬。針對 iOS 14哼审,此版本包含了對新版 Xcode 12 和新圖標的支持,以及對 iOS 14 的新功能輕 App (App Clips) 的預覽支持孕豹。針對 Android 11涩盾,此更新支持新的屏幕類型 (如挖孔屏和瀑布屏),以及在調出軟鍵盤時可以提供更流暢的動畫效果励背。

此版本的發(fā)布距我們 1.20 版本的發(fā)布僅有兩個月時間春霍,因此發(fā)布間隔比大多數版本都短。但在如此有限的時間內叶眉,我們解決了 3,024 個議題 (issue)址儒,并且合并了來自 197 位貢獻者的 1,944 個 PR芹枷。其中有 114 位 (58%) 來自社區(qū),并貢獻了 271 個 PR莲趣。a14n 是最突出的個人貢獻者鸳慈,他再次以 20 個 PR 登上我們的杰出貢獻者名單榜首,他貢獻的大多數 PR 旨在支持 Flutter 中的空安全 (敬請期待更多即將發(fā)布的更新)喧伞。

除了對新版移動操作系統(tǒng)的支持以外蝶涩,我們還有很多其他消息要與您分享,包括針對 Android 呼聲最高的功能之一 "狀態(tài)恢復" 的預覽絮识、一整套新的 Material 按鈕绿聘、可與熱重載配合使用的全新國際化與本地化支持、新版 Navigator次舌、穩(wěn)定版 Platform Views (Google Maps 和 WebView 插件的基礎)熄攘,以及可以在代碼中設置的開關,用以改善高刷新率顯示屏設備上的滾動效果彼念。我們還提供了一款新工具挪圾,可用于剖析應用大小并確保您所構建的插件僅支持您要支持的平臺。

支持 iOS 14

每當廠商發(fā)布新版移動操作系統(tǒng)時逐沙,我們都會對其進行徹底測試哲思,以查找會影響 Flutter 及其工具的兼容性問題或變更。

為了適配 iOS 14吩案,我們對 Flutter 進行了多項更改棚赔,以確保其功能可以滿足開發(fā)者的需求:

  • Xcode 12 需要 iOS 9.0 或更高版本,因此我們的默認模板的默認系統(tǒng)版本從 8.0 提高到 9.0

  • iOS 14 帶來的崩潰和字體渲染問題已在 Flutter 1.22 中得到修復

  • 自 Flutter 1.20.4 起徘郭,部署到物理設備的問題已得到解決

  • 應用訪問剪貼板時會顯示相關使用通知靠益,這項新策略在 Flutter 應用中曾引發(fā)虛假通知,該問題已在 Flutter 1.20.4 中得到修復

  • 禁止在 iOS 14 設備上運行調試應用残揉,但在調試過程中運行應用除外

  • 針對本地調試的 Flutter 應用胧后,有關網絡安全的新策略會使 iOS 14 顯示一次性確認對話框 (僅針對開發(fā)中的應用,不適用于已發(fā)布的 Flutter 應用)

綜上所述抱环,要使您的 Flutter 應用適配 iOS 14壳快,我們強烈建議您立即使用 Flutter 1.22 重新構建應用,然后將其發(fā)布至 App Store镇草,以確保您的 iOS 14 用戶獲得最佳體驗眶痰。

有關 Flutter 適配 iOS 14 的更多詳細信息,包括一些 Add-to-App (將 Flutter 集成至現有應用)陶夜、深鏈接和通知考量因素凛驮,請參閱 Flutter 的 iOS 14 文檔。

希望我們在工具和 SDK 支持方面所做的工作能夠幫助您專注于最關鍵的任務: 充分利用 iOS 14 的新特性条辟。

其中一項特性就是更新了對 iOS 新版 SF Symbols 字體的支持黔夭,為此宏胯,我們也相應地更新了 cupertino_icon package。將 cupertino_icons 依賴項更新到新的 1.0 主版本后本姥,現有的 CupertinoIcons 調用將自動映射為新樣式肩袍。如果將 cupertino_icons 1.0 與 Flutter 1.22 結合使用,那么通過 CupertinoIcons API婚惫,您將能夠獲得約 900 個新圖標氛赐。

您可以在 cupertino_icons 預覽頁面中查看完整的圖標列表,也可以參閱 flutter.dev 上的遷移詳情頁先舷。

針對 iOS 14艰管,您可以使用 Flutter 嘗試的另一項功能是 App Clips,它是 iOS 14 的一項新增功能蒋川,支持以快速牲芋、免安裝的方式執(zhí)行 10MB 以下的輕量版本應用。在 Flutter 1.22 版中捺球,我們提供了使用 Flutter 構建輕 App 的功能預覽缸浦。

△ 使用 Flutter 構建的輕 App 體驗

有關如何使用 Flutter 構建輕 App 的更多詳細信息,請參閱技術文檔氮兵。您也可以參考這一簡單的示例項目裂逐。

Android 11

此版本 Flutter 的發(fā)布與 Android 11 的發(fā)布時間也剛好契合。我們更新了 Flutter 框架和引擎泣栈,以支持最新版 Android 系統(tǒng)中引入的兩項新特性卜高。

第一,Flutter 現在可以提供安全邊襯區(qū)秩霍,以支持 Android 設備的異形屏幕篙悯,包括劉海屏蚁阳、挖孔屏和瀑布屏铃绒。

通過使用 MediaQuery 和 SafeArea API,您可以確保將活動的界面和交互元素放置在設備顯示屏的無遮擋區(qū)域內螺捐。另外颠悬,您需要避免在瀑布屏邊緣區(qū)域內設置手勢檢測,從而避免誤觸問題定血。

第二赔癌,Flutter 應用內顯示軟件鍵盤時的動畫已經可以與 Android 11 實現同步。

△ 請注意左側懸浮操作按鈕 (FAB) 的同步位移

Issue #19279 由來己久澜沟,即系統(tǒng)鍵盤的顯示/隱藏動畫與 Flutter 的邊襯區(qū)一直無法同步灾票。這一問題在 Android 11 中已得到解決。

這里做一則關于 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 配置標記已移除荣暮,現已作為默認行為

  • 仍在使用 v1 API 的舊版應用在構建時會顯示棄用警告,并提供支持新版 Android 插件 API 的文檔入口

同時罩驻,如果您仍有基于 v1 Android API 的 Flutter 應用渠驼,該應用仍然可以運行。但是鉴腻,您可能會逐漸遇到僅適用于 v2 API 的新版插件迷扇,v1 Android API 則無法使用。有關更多詳細信息爽哎,請參閱重大變更文檔蜓席。

更加豐富的按鈕樣式

△ 一整套新的 Material Design 按鈕

現有的 Flutter 按鈕雖然美觀,但并不易用课锌,尤其是在需要自定義主題時厨内。此外,Material 規(guī)范也已經擴充包含了許多全新樣式的按鈕渺贤。

為使 Flutter 緊隨 Material 指南的變更步伐雏胃,我們很高興地宣布 Flutter 1.22 中加入了一整套全新的按鈕。

相比就地嘗試和改進現有的按鈕類及其主題志鞍,這個 PR 引入了新的替換按鈕 widget 和主題瞭亮。這項提議不但使我們免于因維護既有類而踏入向后兼容性的迷宮,還使 Flutter 遵守了 Material Design 指南中對按鈕組件的全新命名規(guī)則固棚。

新主題遵循 Flutter 最近對新 Material widget 采用的 "規(guī)范化" 模式统翩。如果您想通過示例來上手體驗,可以參見 DartPad 中的這個絕佳示例此洲。這并不屬于重大變更厂汗,因為 FlatButton、OutlineButton呜师、RaisedButton娶桦、ButtonBar、ButtonBarTheme 和 ButtonTheme 的語義并未發(fā)生改變。您可以根據喜好將舊按鈕與新按鈕混合搭配使用衷畦。

新的國際化和本地化支持

自發(fā)布以來氮双,Flutter 就提供了對應用進行國際化 (i18n) 和本地化 (l10n) 所需的核心功能。但在最新版本中霎匈,我們將推薦的最佳做法直接整合進了工具當中戴差,甚至實現了熱重載支持,可以在您添加新的本地化信息時更新您的應用铛嘱。

如果您想了解有關 Flutter 本地化支持的更多詳細信息暖释,包括本地化的消息,以及含參數墨吓、日期球匕、數字和貨幣的消息,請閱讀 Flutter 國際化用戶指南帖烘。

此外亮曹,如果您對國際化和本地化感興趣,那么您可能同樣有興趣了解舊的純文本 ASCII 無法支持的字符串秘症,例如 Unicode 和表情符號 (emoji)照卦。最近,Dart 團隊發(fā)布了 characters package乡摹,可以幫助開發(fā)者處理 Unicode (擴展) 字形集役耕。這個 package 可解決諸如如何將類似于 "A ???? text in English" 的字符串正確地縮短至前 15 個字符一類的問題。使用 String 類時聪廉,縮短的結果是 "A ???? text in"瞬痘,僅含 12 個用戶可感知字符。而使用 characters package 則會得到正確的結果: "A ???? text in Eng"板熊。

基于 PR59267框全,Flutter 將使用 characters package 來正確處理這些復雜字符。例如干签,當使用具有 maxLength 限制的 TextField 時津辩,諸如 ???????? ?? 的字符現在可以正確地計為單個字符。另外筒严,基于 PR59620丹泉,characters package 在 Flutter 所在的項目中均自動可用,無需手動添加鸭蛙。希望這種方案可以使處理來自所有語言區(qū)域的各種字符串變得更加容易。有關 characters package 的更多詳細信息筋岛,請參閱《如何正確處理 Dart 字符串》娶视。

可正式使用的 Google Maps 和 WebView 插件

Flutter 團隊在將某項功能標記為 "生產就緒" 前會非常謹慎,并親自完成全面的測試。對于 google_maps_flutter 和 webview_flutter 插件而言肪获,決斷因素一直是底層的 Platform Views 實現寝凌,該實現支持將 Android 和 iOS 系統(tǒng)的原生界面組件托管在 Flutter 應用中。我們很高興地宣布孝赫,我們在此版本的 Flutter 中對框架的基礎進行了充分強化较木,足以將這兩個插件標記為 "生產就緒"。

△ 托管 flutter.dev 的 webview_flutter 插件

在 Flutter 1.22 中青柄,我們新增了備選的 Platform Views 實現伐债,修復了 Android 視圖所有已知的鍵盤和無障礙問題。此外致开,該版本還支持 Android API 19 及更高級別 (此前曾要求 API 級別 20)峰锁。我們還在 iOS 上進行了線程改進,使 Platform Views 更為高效可靠 (并且您不再需要將 io.flutter.embedded_views_preview 標記添加到 iOS Info.plist 中)双戳。

webview_flutter 插件支持新的 Android Platform Views 模式虹蒋,但目前需要手動啟用。當該功能在更廣泛的社區(qū)中得到更多使用后飒货,我們會在未來版本中默認啟用它魄衅。

Google Maps 和 WebView 插件已經從 Platform Views 的改進中受益。如果您想使用 Platform Views 來托管 iOS 或 Android 中的原生界面組件塘辅,可以前往這里了解相關方法徐绑。

Navigator 2.0

如果您曾在 Flutter 應用中使用過導航,那么您可能已經注意到核心數據結構 (即用戶所瀏覽的頁面堆棧) 是對您隱藏的莫辨。要對其進行管理傲茄,您需調用 Navigator.pop() 或 Navigator.push()。舉例來說沮榜,假設您想在首頁上顯示一系列 widget盘榨,用戶點按一個 widget 后轉到呈現該顏色的詳細信息頁面 (如下圖所示)。

這兩個屏幕可以采用如下方式實現:

class ColorListScreen extends StatelessWidget {

使用最簡單的 Navigator 1.0 做法蟆融,即可通過看起來非常簡單的方式在這兩個屏幕之間導航:

class _ColorAppState extends State<ColorApp> {

只需調用 Navigator.push() 即可將某一頁面推入首頁的上方草巡,從而創(chuàng)建包含兩個頁面的堆棧。但與通過 ColorListScreen 的 build 方法創(chuàng)建的一系列 Containers 不同的是型酥,該堆棧將對您隱藏山憨。而且由于堆棧被隱藏,在其他場景中將難以對其進行管理弥喉,例如處理由原生嵌入郁竟、網址或 Android intent 等提供的初始路由中包含的深鏈接。管理同一頁面的不同排列形成的嵌套路由時也十分困難由境。

通過使頁面堆椗锬叮可見蓖议,Navigator 2.0 有效解決了上述乃至更多問題。以下是在相同的 ColorListScreen 和 ColorScreen 之間導航的新示例:

class _ColorAppState extends State<ColorApp> {

該應用顯式創(chuàng)建了 Navigator讥蟆,并為其提供了代表完整堆棧的頁面列表勒虾。我們創(chuàng)建一個空的 _selectedColor 來表示尚未選擇任何顏色,因此我們最初不顯示 ColorScreen瘸彤。當用戶選擇一種顏色時修然,我們將照常調用 setState() 以向 Flutter 指示您需要再次調用 build() 方法,進而創(chuàng)建頂部為 ColorScreen 的堆棧质况。

您可以在 OnPopPage 回調中更新狀態(tài)愕宋,例如,如果用戶執(zhí)行了 pop (彈出棧頂元素) 操作拯杠,則表示他們已 "取消選擇" 當前顏色掏婶,因此我們不再需要顯示該頁面。

Navigator 2.0 看起來與 Flutter 的其余部分相似潭陪,這種設計是有意為之——此版本為聲明式導航雄妥,而不同于 Navigator 1.0 版本的命令式導航。這種設計旨在統(tǒng)一導航與 Flutter 的其余部分之間的模型依溯,以便在解決問題的同時添加新的功能老厌。實際上,本例較為簡略黎炉,只能對 Navigator 2.0 提供粗淺的說明枝秤。如需了解詳細信息,強烈推薦您參閱有關 Flutter 中的聲明式導航和路由的這篇文章慷嗜。

另外淀弹,您對 Navigator 1.0 的現有使用仍將有效,在短期內不會被移除庆械。如果您喜歡該模型薇溃,則可以一如既往地使用該版本。但如果您試用了 Navigator 2.0缭乘,我們相信您會喜歡上這一全新版本沐序。

預覽: 適用于 Android 的狀態(tài)恢復

此版本支持 Android 的狀態(tài)恢復(State Restoration),歡迎大家試用這一新增功能堕绩。這是我們的熱門功能之一策幼,獲得了 217 次點贊!

對于不熟悉狀態(tài)恢復需求的用戶: 移動操作系統(tǒng)可能會終止后臺應用以回收資源供前臺應用使用奴紧。發(fā)生這種情況時特姐,操作系統(tǒng)會通知該應用即將被終止以便其快速保存界面狀態(tài),從而在用戶切換回該應用時能夠恢復绰寞。正確實現該操作后到逊,既能為用戶提供無縫體驗铣口,也可以更好地利用設備資源滤钱。Flutter 此前尚不支持狀態(tài)恢復觉壶,因為在不具備框架支持的情況下很難正確地實現狀態(tài)恢復。正因如此件缸,我們很高興能夠在 Android 平臺中提供此功能的基礎實現铜靶。

下面是一個恢復 Flutter Counter 應用狀態(tài)的非常簡單的示例:

class CounterState extends State<RestorableCounter> with RestorationMixin {

簡而言之,每個 widget 都有一個存儲分區(qū)他炊,該存儲分區(qū)使用唯一 ID 注冊到 RestorationMixin争剿。通過使用 RestorableProperty 類型 (如此例使用的 RestorableInt) 存儲特定于界面的數據,并向狀態(tài)恢復功能注冊該數據痊末,即可在 Android 終止應用前自動存儲數據蚕苇,并在應用恢復運行時恢復數據,就是這么簡單凿叠。所有以 Restoration* 類型存儲的數據 (如 RestorableInt涩笤、RestorableString 和 RestorableTextEditingController,不勝枚舉) 都能被恢復盒件。而且蹬碧,如果我們未能覆蓋您想要恢復的類型,您也可以通過擴展 RestorableProperty<T> 來創(chuàng)建自己的類型炒刁。

為了自動測試狀態(tài)恢復恩沽,我們?yōu)?WidgetTester 添加了一個新的 restartAndRestore API。要進行手動測試翔始,最簡單的方法是在 Android 設備上啟動已啟用狀態(tài)恢復功能的 Flutter 應用罗心,在 Android 的開發(fā)者設置中打開 "Don’t keep activities",運行 Flutter 應用并將其置于后臺城瞎,然后再切換回該應用渤闷。此時,Android 已終止并恢復您的應用全谤,屆時您可以檢查是否一切正常肤晓。

雖然我們很高興為您提供狀態(tài)恢復的預覽版本,但還有更多工作待完成认然。例如补憾,狀態(tài)恢復不僅適用于 Android,iOS 應用也將從中受益卷员。此外盈匾,我們也在致力于更新 Flutter widget,以在恢復時保持其狀態(tài)毕骡。我們已經在 Scrollable 類中提供了支持削饵,例如 ListView 和 SingleChildScrollView (用于記住用戶的滾動位置) 和 TextFields (用于恢復用戶輸入的文本)岩瘦,并且我們計劃將這些支持擴展至其他 widget。

但是窿撬,我們目前尚未為導航 (包括 Navigator 1.0 和 2.0) 添加關鍵恢復支持启昧,這也是我們暫時稱其為預覽版本的原因。這意味著應用暫時無法恢復用戶所在位置劈伴。該功能的測試版即將在 Flutter 的下一個穩(wěn)定版本中正式發(fā)布密末。

預覽: 在輸入頻率與顯示刷新率不匹配情況下提供平滑的滾動效果

Flutter 團隊與 Google 內部合作伙伴密切合作,在輸入頻率與顯示刷新率不同的情況下顯著提高了滾動性能跛璧。例如严里,Pixel 4 輸入頻率為 120hz,而顯示屏刷新率為 90hz追城。在滾動屏幕畫面時刹碾,這種不匹配會導致性能下降。使用新的 resamplingEnabled 標記座柱,您可以利用我們在 Flutter 中實現的性能改進解決此問題:

void main() {

啟用此標記后迷帜,滾動屏幕畫面時的掉幀率最多可以降低 97%,具體取決于所涉及的頻率差辆布。在確定這一配置能夠提供最佳體驗后瞬矩,我們計劃在未來的版本中默認啟用此標記。

全新的統(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 命令耗美。有關更多詳細信息,請參閱 Dart 2.10 的發(fā)布文章航缀。

應用體積分析工具

Flutter 1.22 還帶來了新的輸出應用體積分析的實用工具商架。此工具可以幫助分析 Flutter 并判斷應用尺寸構成是否隨時間變化。

您可以通過將 --analyze-size 標記傳遞給以下任何命令來使用該工具收集分析所需的數據:

  • flutter build apk
  • flutter build appbundle
  • flutter build ios
  • flutter build linux
  • flutter build macos
  • flutter build windows

在構建 Flutter 輸出工件時使用此標記將打印工件大小及組成的摘要芥玉。其中包括原生代碼蛇摸、資源,甚至包括已編譯的 Dart 代碼的軟件包級細分情況灿巧。

△ Flutter Gallery 發(fā)布版本 APK 的細分示例

此摘要有助于快速識別應用軟件包中的尺寸熱點赶袄。此外揽涮,收集到的數據還可作為 JSON 文件用于 Dart DevTools,您可以按照 Flutter 文檔上的說明進一步瀏覽應用的內容饿肺、查明大小問題以及比較兩個不同 JSON 文件之間的差異蒋困。加載 JSON 文件后會出現一個界面,其中提供了應用尺寸情況的樹狀圖唬格。

△ Dart DevTools 中的 APK 細分示例

更多有關您可以使用應用尺寸工具執(zhí)行的操作家破,請參閱文檔: 使用應用尺寸工具颜说。

預覽: 在 DevTools 中更新了 Network 頁面

此版本中的另一項 DevTools 預覽功能是购岗,用戶能夠在 Network 標簽中查看 HTTP 和 HTTPs 響應正文。

要啟用此功能门粪,請確保通過 flutter channel dev 和 flutter upgrade 命令進入 Flutter dev 渠道喊积。

此外,對于網絡流量較大的應用玄妈,我們提供了搜索和篩選功能乾吻。

有關 Network 標簽的文檔,請參閱使用網絡視圖 (Network View) 的說明拟蜻。

IntelliJ 中托管的 DevTools Inspector 標簽

一段時間以來绎签,我們一直在維護著某些 Flutter 工具的兩個副本,例如 IntelliJ 中的 Inspector 窗格和 Dart DevTools 中的 Inspector 標簽酝锅。這不僅降低開發(fā)速度诡必,因為我們必須維護兩個代碼庫,也造成某些功能 (例如 Layout Explorer) 尚未能納入到 IntelliJ 插件當中搔扁。因此爸舒,為了同時解決這兩個問題,我們現在提供直接在 IntelliJ 內部托管 Dart DevTools 的 Inspector 標簽的功能稿蹲。

請注意新出現的 Layout Explorer扭勉,您可以在代碼旁使用該功能。要啟用此選項苛聘,請使用 Preferences > Languages & Frameworks > Flutter > Enable embedded DevTools inspector涂炎。

Visual Studio Code 中的輸出鏈接得到改進

對于所有 Flutter 開發(fā)者而言,在終端或堆棧分析結果中查看錯誤輸出并繼續(xù)解決問題都是一項必不可少的例行工作设哗。在 Visual Studio Code 的最新版本 Flutter 擴展中唱捣,現已能夠正確解析這些鏈接,使您可以直接在輸出結果中使用它們熬拒。

這項功能看似微不足道爷光,卻已獲得了非常積極的初步反饋。

與往常一樣澎粟,我們在工具方面的變更不勝枚舉蛀序,謹建議您參閱以下發(fā)布內容來了解相關詳細信息:

精彩案例: EasyA

EasyA 是一款訂閱應用欢瞪,為適齡學生搭建了通過即時通訊與優(yōu)秀教師溝通的平臺,該應用使用 Flutter 編寫徐裸。這款應用近日被 Apple 推薦為每日精選應用遣鼓。

今年年初,學校紛紛啟動了在線課程重贺,我們需要快速發(fā)布這款教學應用來為學生提供幫助骑祟。Flutter 驚人的開發(fā)速度使我們能夠針對 iOS 和 Android 平臺實現優(yōu)秀的設計,而且還支持發(fā)布到 web 平臺气笙,這有助于我們及時應對停課的局面次企!這在以前是無法想象的。由于 Flutter 支持同時針對所有三個平臺進行開發(fā)潜圃,我們能夠高效地共享代碼缸棵,并最為充分地利用我們的小型開發(fā)團隊。

— Phil Kwok谭期,EasyA 聯合創(chuàng)始人

重大變更

與往常一樣堵第,我們試圖將重大變更的數量降至最低。Flutter 1.22 版本的重大變更列表如下:

總結

Flutter 1.22 穩(wěn)定版在上一版本發(fā)布之后很快問世针余,其中包含了諸多新特性,本篇文章未能一一列舉赏廓。我們希望此版本可以幫助您為 iOS 和 Android 開發(fā)出優(yōu)秀的應用涵紊,我們對您將在應用商店中發(fā)布的產品充滿期待!感謝您的支持——Flutter幔摸,為開發(fā)者而打造摸柄。

歡迎大家在評論區(qū)多多分享功能需求和使用感想,讓我們一起打造更棒的 Flutter既忆!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末驱负,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子患雇,更是在濱河造成了極大的恐慌跃脊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苛吱,死亡現場離奇詭異酪术,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人移怯,你說我怎么就攤上這事兽泄⌒角埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我历帚,道長,這世上最難降的妖魔是什么杠娱? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任挽牢,我火速辦了婚禮,結果婚禮上墨辛,老公的妹妹穿的比我還像新娘卓研。我一直安慰自己,他們只是感情好睹簇,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寥闪,像睡著了一般太惠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疲憋,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天凿渊,我揣著相機與錄音,去河邊找鬼缚柳。 笑死埃脏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的秋忙。 我是一名探鬼主播彩掐,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灰追!你這毒婦竟也來了堵幽?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤弹澎,失蹤者是張志新(化名)和其女友劉穎朴下,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體苦蒿,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡殴胧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了佩迟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片团滥。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡免胃,死狀恐怖,靈堂內的尸體忽然破棺而出惫撰,到底是詐尸還是另有隱情羔沙,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布厨钻,位于F島的核電站扼雏,受9級特大地震影響,放射性物質發(fā)生泄漏夯膀。R本人自食惡果不足惜诗充,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诱建。 院中可真熱鬧蝴蜓,春花似錦、人聲如沸俺猿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽押袍。三九已至诵冒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谊惭,已是汗流浹背汽馋。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留圈盔,地道東北人豹芯。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像驱敲,于是被迫代替她去往敵國和親铁蹈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354