1. 程式人生 > >Flutter 1.22 正式釋出

Flutter 1.22 正式釋出

![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215144899-172175226.png) > 支援iOS 14和Android 11,新的i18n和l10n支援,可用於生產的Google Maps和WebView外掛,新的App Size工具等等! > > 作者:Chris Sells > > 原文:https://medium.com/flutter/announcing-flutter-1-22-44f146009e5f 我們很高興推出最新版本的Flutter,它廣泛支援iOS 14和Android11。Flutter 1.22在以前版本的基礎上構建,使開發人員能夠從一個程式碼庫為多個平臺構建快速,美觀的使用者體驗。我們的季度穩定版本包含最新功能,效能改進和錯誤修復,適合廣泛的生產使用。 由於這是新的移動作業系統版本的釋出季節,因此此發行版側重於確保Android 11和iOS 14與Flutter相容。這兩個作業系統的更新都包括大量的幕後工作,以符合最新的SDK並確保所有內容都通過我們廣泛的測試套件。對於iOS 14,此版本包括對新Xcode 12,新圖示的支援以及對新iOS 14 App Clips功能的預覽支援。對於Android 11,此更新支援新型別的顯示切口以及在調出軟鍵盤時更流暢的動畫。 該版本釋出於我們的1.20釋出兩個月之後,因此比大多數版本都短。即使在這麼短的時間內,我們也關閉了3,024期,合併了197個貢獻者的1,944個PR。在這些貢獻者中,有114位(58%)來自整個社群,他們貢獻了271個PR。最大的單一貢獻者是 [a14n](https://github.com/a14n),他再次以20個PR成為我們的傑出貢獻者名單,其中大多數是作為支援Flutter中的零安全性工作的一部分而完成的(更多內容即將推出)。 除了對新的移動作業系統版本的支援外,還有很多其他要分享的新聞,包括預覽Android最重要的功能之一:狀態恢復,新的“Material 風格按鈕“,新的國際化和本地化支援(與熱過載一起使用),一個新的Navigator,一個穩定的Platform Views版本(Google Maps和WebView外掛的基礎)以及一個開關,您可以在其中新增程式碼以改善在具有高頻率顯示的裝置上的滾動。我們還提供了一個用於剖析應用程式大小並確保您要構建的外掛僅支援您要支援的平臺的新工具。 ### iOS 14 每當釋出新版本的移動作業系統時,我們都會對其進行徹底測試,以查詢影響Flutter及其工具的不相容性或更改。 對於iOS 14,我們對Flutter進行了很多更改,以確保它可以按照開發人員的方式工作: - Xcode 12需要iOS 9.0或更高版本,因此我們的預設模板將其預設值從8.0增加到9.0 - iOS 14特定崩潰和字型渲染問題已在Flutter 1.22中修復 - Flutter 1.20.4,修復了部署到真機裝置的問題 - 當應用程式訪問其剪貼簿時顯示使用通知,導致在Flutter應用程式中出現虛假通知,該問題已在Flutter 1.20.4中修復 - iOS 14裝置上會禁止執行debug應用程式,但實際開發debug除外 - 針對本地除錯的Flutter應用程式的有關網路安全的新策略使iOS 14顯示一次性確認對話方塊(僅在開發過程中,不適用於已釋出的Flutter應用程式) 如果您要通過Flutter應用定位iOS 14,我們強烈建議您使用Flutter 1.22對其進行重建,然後立即將其部署到App Store中,以確保您的iOS 14使用者獲得最佳體驗。 有關使用Flutter適配iOS 14的更多詳細資訊,包括新增Flutter應用到原生應用,deep linking和通知注意事項,請參閱 [flutter.dev上的iOS 14文件](https://flutter.dev/docs/development/ios-14)。 希望所有有關工具和SDK支援的工作都可以讓您專注於自己關心的編碼-利用iOS 14的新功能。 其中一項功能是對iOS的新SF Symbols字型的更新支援,我們花一些時間更新了cupertino_icon程式包。將cupertino_icons依賴關係更新為新的1.0主要版本後,CupertinoIcons的現有用法將自動對映到新樣式。如果您將cupertino_icons 1.0與Flutter 1.22結合使用,那麼您還可以通過CupertinoIcons API訪問約900個新圖示。 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215145326-667405671.png) 您可以在cupertino_icons預覽頁面上看到圖示的完整列表,在 [flutter.dev上可以看到遷移詳細資訊頁面](https://flutter.dev/docs/release/breaking-changes/cupertino-icons-1.0.0)。 您可以在iOS 14上嘗試使用Flutter的另一個功能是App Clips,它是iOS 14的一項新功能,它支援10MB以下輕量級應用程式的快速,無安裝應用程式執行。在Flutter 1.22版中,我們預覽了使用Flutter構建的App Clip目標。 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215146336-16030692.png) 有關如何使用Flutter構建Clip的更多詳細資訊,請檢視[flutter.dev上的文件](https://flutter.dev/docs/development/platform-integration/ios-app-clip)。您也可以參考這個[簡單的示例專案](https://github.com/flutter/samples/tree/master/ios_app_clip)。 ### Android 11 Flutter的這個版本也與本月Android 11的釋出相吻合。 Flutter框架和引擎已更新,以支援最新版本的Android中引入的兩個新功能。 首先,Flutter現在支援多種螢幕適配(比如瀑布屏)。 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215147192-542202689.png) 通過使用MediaQuery和SafeArea API,您可以確保將活動的UI和互動式元素放置在裝置顯示屏的無障礙區域中。另外,您將要避免在瀑布邊緣區域使用手勢檢測器,因為這可能會導致意外觸控。 其次,動畫在顯示軟體鍵盤時與Android 11同步。 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215148794-129373592.gif) 問題 [#19279](https://github.com/flutter/flutter/issues/19279)是一個長期存在的問題,其中系統鍵盤的顯示/隱藏動畫與Flutter的插圖不同步。這在Android 11中已修復。 關於Android嵌入API的一項說明。去年,隨著Flutter 1.12版的推出,我們推出了一套適用於Android的新Flutter引擎和Flutter外掛API。我們建立了這些v2 API,以更好地支援Android上的應用程式新增使用者。一年後,超過80%的Android外掛使用了新的Android API。從1.22開始,我們不再使用較舊的v1 API。 如果您仍在使用Android v1 API,那麼這對您意味著: - 新建立的外掛將不再針對v1 API - Flutter工具的 `-no-enable-android-embedding-v2`配置標記已刪除,現在是預設行為 - 仍在使用v1 API的舊版應用程式在構建過程中將顯示棄用警告,該警告指向支援[新的Android外掛API文件](https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration) 同時,如果您仍然有基於v1 Android API的Flutter應用程式,它將繼續執行。但是,您可能會開始遇到僅針對v2 API且v1 Android API無法使用的新外掛。有關更多詳細資訊,請[參見重大更改文件](https://flutter.dev/docs/release/breaking-changes/android-v1-embedding-create-deprecation)。 ### 擴充套件的 Button 元件 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215149468-251164416.png) 現有的Flutter按鈕看上去不錯,但很難使用,尤其是在需要自定義主題時。此外,“Material”規範已擴充套件為包括具有新樣式的新按鈕。 為使Flutter保持與Material指南的最新水平,我們很高興地宣佈Flutter 1.22中的引入全新的按鈕。 該PR並沒有嘗試就地開發現有的按鈕類及其主題,而是引入了新的替換按鈕小部件和主題。除了使我們擺脫現有類的向後相容性迷宮之外,新名稱還使Flutter與Material Design規範同步,後者使用按鈕元件的新名稱。 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215149691-1440771879.png) 新主題遵循Flutter最近在新Material視窗小部件中採用的“規範化”模式。如果您想玩演示,[DartPad](https://dartpad.dev/e560e1c2e4455ad53aac245079ccdcf2)上有一個很棒的演示。這並不是一個重大變化,因為FlatButton,OutlineButton,RaisedButton,ButtonBar,ButtonBarTheme和ButtonTheme的語義不會改變。您可以將舊按鈕與新按鈕混合使用。 ### 新的國際化和本地化支援 自Flutter創立以來,Flutter已提供您的應用程式國際化(i18n)和本地化(l10n)所需的核心功能。但是,在此版本中,我們將最佳做法的意見納入了我們的工具中,甚至在新增新的l10n資訊時啟用了熱重灌支援來更新您的應用。 ![](https://img2020.cnblogs.com/other/467322/202010/467322-20201009215150241-926449141.gif) 如果您想了解有關Flutter對l10n的支援的更多詳細資訊,包括本地化訊息,帶有引數的訊息,日期,數字和貨幣,請閱讀[Flutter Internationalization使用者指南](https://docs.google.com/document/d/10e0saTfAv32OZLRmONy866vnaw0I2jwL8zukykpgWBc/edit)。 此外,如果您對i18n和l10n感興趣,那麼您可能還對那些字串不適合普通ASCII字元的字串感興趣,例如Unicode和emoji。最近,Dart團隊釋出了character軟體包,該軟體包可幫助開發人員處理Unicode(擴充套件)字形簇。該軟體包有助於解決諸如如何正確地將字串(如“ A in text in English”)縮寫為前15個字元的問題。使用String類,該縮寫為“ A