日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flutter 2.5 发布啦,快来看看新特性

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter 2.5 发布啦,快来看看新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接 https://medium.com/flutter/whats-new-in-flutter-2-5-6f080c3f3dc

Flutter 2.5 是 Flutter 版本歷史上排名第二的大版本更新,該版本:

  • 關閉了 4600 個 issues;
  • 合并了 252 contributors 和 216 reviewers 的 3932 個 PR;

回顧過去一年,可以看到有 1337 位 contributors 創建了 21,072 個 PR 這樣龐大的數據,其中有15,172 個被合并。

事實上該版本依然是對性能和開發工具進行了改進,同時還有增加許多新功能,包括:

  • 對 Android 的全屏支持、更多 Material You(也稱為 v3)支持;
  • 更新文本編輯功能以支持可切換的鍵盤快捷鍵;
  • Widget Inspector 可查閱更多詳細信息;
  • Visual Studio Code 項目中對添加依賴項增加新的支持;
  • IntelliJ/Android Studio 中新增測試運行獲取覆蓋率信息;
  • 一個全新的應用程序模板,為 Flutter 應用程序提供更好的開發基礎;

性能:iOS 著色器預熱、異步任務、GC 和消息傳遞

#25644 中的第一個 PR 就是用于離線訓練運行 Metal 著色器預編譯,如基準測試所示,它將最壞情況的幀光柵化時間減少了 2/3 秒,將第 99 個百分位幀減少了一半。

然而著色器預熱只是卡頓的來源之一,在之前的版本處理來自網絡、文件系統、插件或其他 isolate 的異步事件都可能會中斷動畫,這是另一個卡頓的來源。

所以 #25789 改進了調度策略,在此版本 isolate 的 UI 事件循環里,幀處理現在優先于處理其他異步事件,從而在測試中消除了此類的卡頓。

另一個導致卡頓的原因是垃圾收集器 (GC) 暫停 UI 線程以回收內存。

以前某些圖像的內存在響應 Dart VM 的 GC 執行時會延遲回收,作為早期版本中的解決方法,Flutter 引擎會通過 Dart VM 的 GC 回收暗示圖像內存可以回收,這在理論上可以實現了更及時的內存回收。

不幸的是這也導致了太多的主要 GC,并且有時仍然無法足夠快地回收內存,以避免內存受限設備上的低內存情況,而在這個版本中未使用的圖像的內存被急切地回收(#26219、#82883、#84740),大大減少了 GC。

例如在一項測試用例中,播放 20 秒動畫 GIF 從需要 400 多次 GC 變為只需要 4 次,更少的主要 GC 意味著涉及圖像出現和消失的動畫將減少卡頓,并消耗更少的 CPU 和功率。

Flutter 2.5 的另一個性能改進是在 Dart 和 Objective-C/Swift (iOS) 或 Dart 和 Java/Kotlin (Android) 之間發送消息時的延遲。

通常作為調整 消息頻道的一部分,從消息編解碼器中刪除不必要的副本可將延遲減少高達 50% ,當然具體取決于消息大小和設備(#25988,#26331)。

你可以在此鏈接獲取到更多關于平臺通道性能的信息: https://medium.com/flutter/improving-platform-channel-performance-in-flutter-e5b4e5df04af

Dart 2.14:格式、語言特性、發布和 linting 開箱即用

此版本的 Flutter 和 Dart 2.14 一起發布。

新版本的 Dart 帶有新的格式,使級聯 更加清晰,新的 pub 支持忽略文件,以及新的語言功能,包括三重移位運算符的回歸

此外 Dart 2.14 創建了一組標準的 lint,在新的 Dart 和 Flutter 項目之間共享,開箱即用。

開發者不僅會在創建新的 Dart 或 Flutter 項目時獲得這些 lint,而且只需幾個步驟就可以將相同的分析添加到現有應用程序中。

合并遷移lint:https://flutter.dev/docs/release/breaking-changes/flutter-lints-package#migration-guide

有關這些 lint 的詳細信息、新語言功能等,請查看 https://medium.com/dartlang/announcing-dart-2-13-c6d547b57067

Framework:Android 全屏、Material You & 文本編輯快捷方式

從 #81303 開始, 我們修復了 Android 一系列與全屏模式相關的問題,此更改還添加了一種在其他模式下收聽全屏更改的方法。

例如用戶與應用互動時,當系統 UI 返回時,開發人員現在可以編寫代碼在返回全屏時執行其他操作。

新的 Android 全屏模式:普通模式(左)、邊到邊模式(中)、帶有自定義 SystemUIOverlayStyle 的邊到邊(右)

在此版本中,我們對新 Material You(又名 v3)的規范增加了支持,包括對浮動操作按鈕大小和主題的更新(#86441),在MaterialState.scrolledUnder 可以使用 Demo 中的示例代碼查看的新狀態 PR 式例 ( #79999 )。

新的 MaterialState.scrolledUnder 狀態在起作用

另一個改進是添加了 scroll metrics notifications(#85221、#85499),即使用戶沒有滾動,它也會提供可滾動區域的通知,例如下面顯示了 ListView 根據的基礎大小適當地出現或消失滾動條:

在這種情況下不必編寫任何代碼,但如果想捕獲 ScrollMetricNotification 更改,則可以通過此監聽來完成。

特別感謝社區貢獻者xu-baoolin,他為此付出了努力并提出了一個很好的解決方案。

另一個出色的社區貢獻是為 ScaffoldMessenger , 你可能還記得 Flutter 2.0 開始 ScaffoldMessenger 作為一個更強大的方式來顯示 SnackBars , 在屏幕的底部為用戶提供通知,而在 Flutter 2.5 中,現在可以在 Scaffold 的頂部添加一個橫幅,該橫幅會一直保持到用戶關閉它為止。

應用程序可以通過調用以下 showMaterialBanner 方法來獲得此行為 ScaffoldMessenger :

class HomePage extends StatelessWidget {const HomePage({Key? key}) : super(key: key);@overrideWidget build(BuildContext context) => Scaffold(appBar: AppBar(title: const Text('The MaterialBanner is below'),),body: Center(child: ElevatedButton(child: const Text('Show MaterialBanner'),onPressed: () => ScaffoldMessenger.of(context).showMaterialBanner(MaterialBanner(content: const Text('Hello, I am a Material Banner'),leading: const Icon(Icons.info),backgroundColor: Colors.yellow,actions: [TextButton(child: const Text('Dismiss'),onPressed: () => ScaffoldMessenger.of(context).hideCurrentMaterialBanner(),),],),),),),); }

Material 指南規定 開發者的應用橫幅一次只能顯示一個,因此如果你調用多次 showMaterialBanner,ScaffoldMessenger 它將維護一個隊列,在前一個橫幅已被關閉之后,再顯示一個新橫幅。

感謝 Calamity210 對 Flutter 中的 Material 支持做出了如此出色的補充!

在此版本中,我們添加了文本編輯鍵盤快捷鍵可覆蓋的功能 #85381,這是在 Flutter 2.0 及其新的文本編輯功能的基礎上進一步構建,例如文本選擇以及能夠在處理鍵盤事件后停止它的傳播。

如果您希望 Ctrl-A 執行一些自定義操作而不是選擇所有文本。

DefaultTextEditingShortcuts 類包含每個平臺上受支持的鍵盤快捷鍵列表,如果開發者想覆蓋任何內容,可以使用 Flutter 的現有 Shortcuts 將任何快捷方式重新映射到現有或自定義意圖。

API 參考: https://api.flutter.dev/flutter/widgets/DefaultTextEditingShortcuts-class.html

插件:相機、圖像選擇器和 plus 插件

另一個具有有很多改進的插件是相機插件:

  • #3795 [相機] android-rework 第 1 部分:支持 Android 相機功能的基類
  • #3796 [相機] android-rework 第 2 部分:Android 自動對焦功能
  • #3797 [camera] android-rework part 3:Android曝光相關功能
  • #3798 [相機] android-rework 第 4 部分:Android 閃光和變焦功能
  • #3799 [相機] android-rework 第 5 部分:Android FPS 范圍、分辨率和傳感器方向功能
  • #4039 [相機] android-rework 第 6 部分:Android 曝光和焦點功能
  • #4052 [camera] android-rework part 7:Android降噪功能
  • #4054 [相機] android-rework 第 8 部分:最終實現的支持模塊
  • #4010 [camera] 在 iOS 上不觸發設備方向
  • #4158 [相機] 修復坐標旋轉以在 iOS 上設置焦點和曝光點
  • #4197 [相機] 修復相機預覽并不總是在方向改變時重建
  • #3992 [camera] 設置不受支持的 FocusMode 時防止崩潰
  • #4151 [camera] 引入camera_web包

image_picker 插件 也做了很多工作,專注于端到端的相機體驗:

  • #3898 [image_picker] 圖像選擇器修復相機設備
  • #3956 [image_picker] 將相機捕獲的存儲位置更改為 Android 上的內部緩存,以符合新的 Google Play 存儲要求
  • #4001 [image_picker] 刪除了對相機權限的冗余請求
  • #4019 [image_picker] 當相機是 source 時修復旋轉

這項工作改進了 Android 的相機和 image_picker 插件的功能和穩健性。

此外你會注意到 攝像頭插件 的早期版本可用于網絡支持 ( #4151 )。

此預覽為在 Web 上查看相機預覽、拍照、使用閃光燈和縮放控件提供基本支持,它目前還不是被認可的插件,因此您需要明確添加它以在才能在 web 中使用。

詳細內容: https://pub.dev/packages/camera_web/install

在此版本的 Flutter 中,Flutter 團隊的每個相應插件現在都帶有一個類似 電池 的建議:

此外,由于這些插件不再被積極維護,它們不再被標記為 Flutter 最喜歡的插件,我們建議使用以下插件的 plus 版本:

Flutter DevTools:性能、Widget 檢查器和 Polish

首先最重要的是 DevTools 中增加利用引擎更新的支持(#26205、#26233、#26237、#26970、#27074、#26617)。

其中一組更新使 Flutter 能夠更好地將跟蹤事件與特定框架相關聯,這有助于開發人員確定框架可能超出預算的原因。

可以在 DevTools Frames 圖表中看到這一點,該圖表已被重建為“實時”,可以在應用程序呈現時填充在此圖表中,從此圖表中選擇一個幀導航到該幀的時間線事件:

Flutter 引擎現在還可以識別時間線中的著色器編譯事件,Flutter DevTools 使用這些事件來幫助診斷應用程序中的著色器編譯卡頓。

借助這項新功能,DevTools 會檢測何時因著色器編譯丟失幀,以便可以解決卡頓問題。

在 flutter run 時與 --purge-persistent-cache 標志一起使用,這會清除緩存以確保重現用戶在 “首次運行” 或 “重新打開” (iOS) 體驗中看到的環境。

此功能仍在開發中,如果有任何問題,可以查閱:https://b.corp.google.com/issues/new?component=775375&template=1369639

此外跟蹤應用程序中的 CPU 性能問題時,可能會被來自 Dart 和 Flutter 庫或引擎本機代碼的分析數據淹沒,如果想關閉其中任何一個以專注于您自己的代碼,您可以使用新的 CPU Profiler 功能 #3236 來實現,該功能可以從這些來源中隱藏分析器信息

對于沒有過濾掉的任何類別,它們現在已經進行了顏色編碼(#3310、#3324),以便可以輕松查看 CPU 幀圖表來自系統的哪些部分

彩色框架圖,用于識別應用中的應用、原生、Dart 和 Flutter 代碼活動

性能并不時調試的唯一因素,此版本的 DevTools 附帶了對 Widget Inspector 的更新,允許將鼠標懸停在 Widget 時評估對象、視圖屬性、小部件狀態等

而當選擇一個 Widget 時,它會自動填充在新的小部件檢查器控制臺中,這樣就可以在其中瀏覽 Widget 的屬性。

在斷點處暫停時還可以從控制臺計算表達式。

除了新功能外 Widget Inspector 還進行了翻新,為了讓 DevTools 成為了解和調試 Flutter 應用程序的更有用,我們與芬蘭的一家創意技術機構Codemate合作進行了一些更新。

在此屏幕截圖中可以看到以下更改:

  • 更好地傳達調試切換按鈕的作用——這些按鈕具有新圖標、面向任務的標簽,以及描述它們的作用和何時使用它們的豐富工具提示,每個工具提示進一步鏈接到該功能的詳細文檔。

  • 更容易掃描和定位感興趣的 Widgets——Flutter 框架中常用的 Widget 現在在檢查器左側的 Widget 樹視圖中顯示圖標,它們根據類別進一步進行顏色編碼,例如布局 Widget 顯示為藍色,而內容Widget 顯示為綠色。此外每個文本 Widget 現在顯示其內容的預覽。

  • 對齊布局資源管理器和小部件樹的配色方案- 現在可以更輕松地從布局資源管理器和 Widget 樹中識別相同的 Widget。例如屏幕截圖中的“列” Widget 位于布局瀏覽器中的藍色背景上,并且在 Widget 樹視圖中具有藍色圖標。

IntelliJ/Android Studio:集成測試、測試覆蓋率和圖標預覽

Flutter 的 IntelliJ/Android Studio 插件在此版本中也進行了許多改進,首先是運行集成測試的能力 ( #5459 )。

集成測試是在設備上運行的整個應用程序測試,位于 integration_test 目錄中,并使用與testWidgets() 單元測試相同的功能。

要將集成測試添加到項目,請 按照 flutter.dev 上的說明進行操作,要將測試與 IntelliJ 或 Android Studio 連接,請添加啟動集成測試的運行配置并連接設備以供測試使用,運行配置可以讓開發者運行測試,包括設置斷點、步進等。

此外,Flutter 最新的 IJ/AS 插件允許查看單元測試和集成測試運行的覆蓋率信息,可以從“調試”按鈕旁邊的工具欄按鈕訪問它:

覆蓋信息在編輯器的裝訂線中使用紅色和綠色條顯示,在這個例子中第 9-13 行被測試,但第 3 和 4 行沒有被測試。

最新版本還包括預覽來自 pub.dev 包中使用的圖標的新功能,這些包是圍繞 TrueType 字體文件(#5504、#5595、#5677、#5704)構建的,就像 Material 和 Cupertino 圖標支持預覽一樣。

要啟用圖標預覽,您需要告訴插件您正在使用哪些軟件包,settings/preferences 中有一個新的文本字段:

請注意,如屏幕截圖中的示例代碼所示,此設置僅適用于在類中定義為靜態常量的圖標,它不適用于表達式,例如 LineIcons.addressBook() or LineIcons.values['code'] 。

Visual Studio Code:依賴項、Fix All 和 Test Runner

Flutter 的 Visual Studio Code 插件也在此版本中得到了改進,兩個新命令 “Dart: Add Dependency” and “Dart: Add Dev Dependency” (#3306, #3474)。

這些命令提供的功能類似于Jeroen Meijer 的 Pubspec Assist 插件,新命令開箱即用,并提供定期從 pub.dev 獲取的包類型過濾列表。

開發者可能還對適用于 Dart 文件的“Fix All”命令(#3445、#3469)感興趣,并且可以一步修復所有與dart fix相同的問題。

這也可以通過添加 source.fixAll 到 editor.codeActionsOnSave 的 VS Code 設置來設置為在保存時運行,或者想嘗試預覽功能,可以啟用該 dart.previewVsCodeTestRunner 設置并查看通過新的 Visual Studio Code 測試運行程序運行的 Dart 和 Flutter 測試。

Visual Studio Code 測試運行器看起來與當前的 Dart 和 Flutter 測試運行器略有不同,它將跨會話保留結果。Visual Studio Code 測試運行器還添加了新的裝訂線圖標,顯示測試的最后狀態,可以單擊以運行測試(或右鍵單擊以獲取上下文菜單)。

在即將發布的版本中,現有的 Dart 和 Flutter 測試運行器將被移除,以支持新的 Visual Studio Code 測試運行器。

工具:異常、新應用模板和 Pigeon 1.0

在此版本中,調試器現在可以在未處理的異常上正確中斷,而這些異常以前時被 framework 捕獲 ( #17007 )。

這改善了調試體驗,因為調試器現在可以直接指向他們在代碼中的拋出行,而不是指向框架深處的隨機行。

一個相關的新功能使開發者能夠決定 FutureBuilder 是否應該重新拋出或吞下錯誤 (#84308),這應該會為開發者提供大量額外的例外情況,以幫助追蹤 Flutter 應用程序中的問題。

自 Flutter 誕生以來,就出現了 Counter 應用模板,它具有許多優點:

  • 它展示了 Dart 語言的許多特性;
  • 展示了幾個關鍵的 Flutter 概念,并且它足夠小;
  • 可以放入單個文件中,即使有很多的解釋性評論;

然而它沒有為Flutter 應用程序提供一個特別好的起點,在此版本中,通過以下命令提供了一個新模板 ( #83530 ):

$ flutter create -t skeleton my_app

骨架模板生成一個遵循社區最佳實踐的兩頁列表視圖,它的開發經過大量內部和外部審查,為構建生產質量應用程序提供了更好的基礎,并支持以下功能:

  • 用于 ChangeNotifier 協調多個 Widget
  • 默認情況下使用 arb 文件生成本地化
  • 包括示例圖像并為圖像資產建立 1x、2x 和 3x 文件夾
  • 使用“功能優先”的文件夾組織
  • 支持共享首選項
  • 支持明暗主題
  • 支持多頁面間導航

隨著時間的推移,隨著 Flutter 最佳實踐的發展預計這個新模板也會隨之發展。

另一方面,如果你正在開發插件而不是應用程序,那么可能會對 Pigeon 的 1.0 版本感興趣。

Pigeon 是一個代碼生成工具,用于在 Flutter 及其主機平臺之間生成類型安全的互操作代碼,它允許定義插件 API 的描述,并為 Dart、Java 和 Objective-C(分別可用于 Kotlin 和 Swift)生成框架代碼。

Flutter 團隊的一些插件中已經使用了 Pigeon,在此版本中它提供了更多有用的錯誤消息,增加了對泛型、原始數據類型作為參數和返回類型以及多個參數的支持,預計開發者將來會更頻繁地使用它。

重大更改和棄用

以下是 Flutter 2.5 版本中的重大變化:

  • 默認拖動滾動設備
  • 在 v2.2 之后刪除了棄用的 API
  • 引入包:flutter_lints
  • ThemeData 的 accent 屬性已被棄用
  • GestureRecognizer Cleanup
  • 用 collate 替換 AnimationSheetBuilder.display
  • 使用 HTML 插槽在 Web 中呈現平臺視圖
  • 將 LogicalKeySet 遷移到 SingleActivator

隨著繼續更新 Flutter Fix(在您的 IDE 中和通過dart fix命令可用),總共有 157 條規則來自動遷移受這些或過去的重大更改以及任何棄用影響的代碼。

此外隨著 Flutter 2.5 的發布,我們將棄用2020 年 9 月宣布的對 iOS 8 的支持。放棄對市場份額不到 1% 的 iOS 8 的支持,使 Flutter 團隊能夠專注于更廣泛使用的新平臺,棄用意味著這些平臺可以工作,但我們不會在這些平臺上測試 Flutter 的新版本或插件。

您可以在 flutter.dev 上查看當前支持的 Flutter 平臺列表: https://flutter.dev/docs/development/tools/sdk/release-notes/supported-platforms

總結

以上是生活随笔為你收集整理的Flutter 2.5 发布啦,快来看看新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。