大家好,歡迎來到 Flutter 又一個穩定版釋出。今年到目前為止,我們每季度都如期釋出了一個穩定版,正如我們的計劃(好吧,與其說是計劃,不如說是一個目標,但到目前為止,它進行得很順利……)。這次釋出是我們迄今為止規模最大的一次,合併了來自 116 位貢獻者的 620 個 Pull Request。一如既往,有趣的 PR 列表如下。本次釋出有很多值得討論的有趣內容,包括:

  • 修復了一個迴歸問題,但又增加了一個
  • 一些 API 重大變更
  • 一些已發現並修復的嚴重問題
  • 支援 macOS Catalina 和 iOS 13
  • 一些新功能
  • 以及更多!

需要明確的是,當我說“我們”時,我指的是整個 Flutter 社群。沒有貢獻者,Flutter 團隊就不可能像現在這樣不斷發展壯大,無論你的僱主是誰。感謝大家的貢獻!

迴歸問題

#

在此次釋出中,我們修復了一個迴歸問題(37955 Update shader warm-up for recent Skia changes),並引入了另一個(38167 Incremental compiler re-issuing of errors from constant evaluator)。新的迴歸問題已在 1.9.1 穩定版釋出後修復(00d14e7 [CFE] Always start constant evaluation error where we are asked to evaluate),因此如果您遇到此問題,可以選擇使用更新的版本來將其整合到您的 Flutter 應用中。

API 重大變更

#

我們努力避免進行破壞性更改,但同時也不希望在將 Flutter 推向新場景和新平臺時建立不直觀的 API。這些是本次釋出中的破壞性更改。請參閱相關公告,以便您能夠更新您的程式碼。

33281公告)更新 TextStyle 和 StrutStyle 的 height 文件

34019公告)Selectable Text

34665公告)Selection handles position is off

35110公告)始終測試語義

35136公告)更新 Dark Theme 的 disabledColor 為 White38

35785公告)移除隱式動畫小部件中的 reverseDuration,因為它會被忽略。

36030公告)[Material] 實現 TooltipTheme 和 Tooltip.textStyle,修復 Tooltip debugLabel,更新 Tooltip 預設值

36106公告)更新 ColorScheme.dark() 顏色以匹配 Material Dark 主題規範

36217公告)將 Mouse 從 Listener 中分離

36402公告)讓渲染物件重用引擎圖層

36856 (無公告) [Material] 實現 TooltipTheme 和 Tooltip.textStyle,更新 Tooltip 預設值

36964公告)Interactive size const

37338公告)更新建構函式 API TooltipTheme、ToggleButtonsTheme、PopupMenuTheme

37341 (無公告) 隱藏 hero 過渡後的原始 hero

37544公告)用 ButtonBarTheme 替換 ButtonBar.bar 方法

37652公告)更改 RenderObject.getTransformTo 方法以包含祖先。

37736公告)添加了可組合的 waitForCondition Driver/extension API

嚴重:崩潰、客戶關鍵和效能修復

#

在 Flutter 中,我們努力在每次釋出時都增加一些質量。這次,我們修復了幾個嚴重問題,包括崩潰、客戶關鍵問題和效能問題。

34907 修復 LicensePage 在載入 License 前關閉頁面導致錯誤

35223 Navigator pushAndRemoveUntil 修復

36097 修復巢狀滾動檢視在未佈局時重建

37033 修復 axis direction 反轉時的 debug paint 崩潰

37254 當 extendBody 為 true 時,Clamp Scaffold 的最大 body 高度

34298 儲存 SafeArea:第 2 部分

37718 向 MediaQueryData 和 TestWindow 新增 physicalDepth

35297 修復 tracing 和 driver 中的第一個幀邏輯

新功能

#

此版本還帶來了兩個新的 Material 小部件:ToggleButtons 小部件(在 iOS 上稱為分段控制元件)和一個 ColorFilter 小部件(在“文字與輔助功能”部分有介紹)。要檢視這些小部件的實際應用,請檢視簡短的ToggleButtonsColorFilter示例。此外,SelectableText 小部件允許使用者選擇只讀文字。

34599 [Material] ToggleButtons

34019 Selectable Text

35207 重構 selection handlers

36030 [Material] 實現 TooltipTheme 和 Tooltip.textStyle,修復 Tooltip debugLabel,更新 Tooltip 預設值

36411 實現 InputDecorationTheme 的 copyWith、==、hashCode

36856 [Material] 實現 TooltipTheme 和 Tooltip.textStyle,更新 Tooltip 預設值

36963 向 tooltips 新增邊距

37266 更改 kMaxUnsignedSMI 的值以用於 Web

37341 隱藏 hero 過渡後的原始 hero

37492 Drawer 邊緣拖動寬度改進

macOS Catalina 支援

#

隨著 macOS Catalina 的即將釋出,我們確保在您遷移到 Catalina、iOS 13 和 Xcode 11 時,我們的工具鏈仍能順利執行。我應該指出,在升級到 Catalina 之前,您應該升級到 Flutter 1.9.1 穩定版釋出。反之亦然,但您在那樣做時會看到一個錯誤(該錯誤是良性的,但仍然……)。

38325 重構 flutter upgrade 為兩部分,第二部分是可重入的

cd70b 使用 MAP_JIT 進行可執行頁面的 mmap (macOS Catalina 需要)。

38662 從使用預設值更改為使用 plutil 進行 Plist 解析

2856 更新“入門”路徑設定以支援 zsh shell(macOS Catalina 支援)

2857 更新“iOS 設定”頁面以反映 Xcode 11 UI 更新

37733 支援 macOS Catalina 風格的簽名證書名稱

10010 目標為 arm 時使用 simarm_x64

37407 刪除 iOS 構建中的 multi-arch 檢查

37445 將 iOS gen_snapshot 從 multi-arch 二進位制檔案切換為多個二進位制檔案

37647 更改 gen_snapshot 搜尋路徑的優先順序

iOS

#

在此版本中有超過 50 個 PR,iOS 支援仍然是 Flutter 的重點,包括 iOS 13 捲軸實現(支援長按、從右側拖動和振動反饋)、CupertinoSwitch 小部件更新以匹配 iOS 13,以及對 bitcode 的持續實驗。

35829 iOS 13 捲軸

37724 iOS 13 捲軸振動

36087 更新 CupertinoSwitch 的視覺樣式以匹配 iOS 13

38587 改進 bitcode 檢查

36471 為 AOT 編譯啟用 bitcode

36093 重新提交 bundle ios deps

34676 預設啟用密碼文字欄位的選擇,並公開 API 以…

34723 CupertinoTextField 垂直對齊

34964 CupertinoTextField.onTap

35303 修復預設工件以排除 ios 和 android

35307 清理 host_app_ephemeral Profile 構建設定

35731 從 CLI 執行時,保持 LLDB 連線到 iOS 裝置

35749 新增 iOS 構建基準測試

35756 刪除 @objc 推斷構建設定

35763 UIApplicationLaunchOptionsKey -> UIApplication.LaunchOptionsKey

35833 在 ephemeral add-to-app 專案的 Xcode 構建階段停用 CocoaPods 輸入和輸出路徑

36174 [cupertino_icons] 為 brightness #16102 新增字形引用

36194 從 CLI 執行時,保持 LLDB 連線到 iOS 裝置

36498 清理 host_app_ephemeral_cocoapods Profile 構建設定

36793 將 Flutter 模組 App.framework 作為本地 CocoaPod 進行 vend,由宿主應用安裝

36887 修復 thumb 尺寸計算

37026 新增對卡納達語 (kn) 區域設定的支援

37048 使用 SizedBox 而不是 Container 來構建摺疊式 selection

37276 將 podhelper.rb 設為模板,以避免傳遞模組名稱

37319 調整 resizeToAvoidBottomInset Cupertino 的高度,不包含 NavBar

37449 如果 xcode_backend.sh 指令碼失敗或缺少替換變數,則使宿主 Xcode 構建失敗

37738 安裝模組 Pod 時使用相對路徑

37809 向內部使用 Focus 小部件的小部件新增 autofocus 引數

37906 始終安裝 ephemeral engine 副本,而不是從 CocoaPods spec 中獲取

38593 修復 Cupertino scaffolds 的非內容元件的文字縮放因子

38629 處理已連線但未配對的 iOS 裝置的情況

38645 重新命名 iOS arch 以用於 macOS release 模式 (macOS release 模式 2/3)

9075 IOS Platform view 轉換/剪裁

9464 向 ios unit test 指令碼新增 shebangs。

9478 iOS PlatformView 剪裁路徑

9491 低記憶體時清除 iOS 快取

9636 向 ios unit test 指令碼新增 shebangs。(#9464)

9667 iOS platform view opacity

9722 將 iOS 暗黑模式 trait 轉發到 Flutter 框架 (#34441)。

9819 允許動態合併執行緒以處理 iOS 中嵌入式檢視的更改

9952 ios: 修復了第一個幀的回撥,使其不依賴於啟動畫面。

10186 確保 debug 模式應用始終在 iOS 上附加。

10381 修復 iOS 上的空 composing range

10386 在 iOS 上不使用 DBC 進行熱過載。

10645 在 iOS 上不使用 DBC 進行熱過載。

10656 修復 iOS 鍵盤崩潰:-[__NSCFString substringWithRange:],range o…

10662 將本地 podspec 的 iOS 部署目標版本從 7.0 提高到 8.0

10777 手動回滾 Skia 以引入 iOS armv7 構建失敗修復。

10791 重新支援 iOS 上的平臺亮度

10820 iOS JIT 支援和場景應用增強

10949 修復 iOS 對 PostPrerollResult 的引用

11006 在 iOS 上透過 service protocol 將首選幀率報告給工具。

Android

#

此次釋出中,Android 的最大新增功能是支援新的 flutter 命令:“flutter build aar”。此新構建命令的工作方式類似於“flutter build apk”或“flutter build appbundle”,但用於外掛和模組專案。透過將外掛構建為AAR,Android Gradle 外掛可以使用 Jetifier 將支援庫轉換為 AndroidX 庫,用於外掛的所有原生程式碼,這降低了在應用中使用 AndroidX 時的錯誤率。

35217 新增 flutter build aar

36732 Flutter build aar

10778 構建包含 Android 嵌入式源和引擎原生庫的 JAR 檔案

34573 確保 flutter jar 已新增到外掛專案的所有構建型別中

36695 Android 可見密碼輸入型別支援

36805 允許宿主應用使用 flavors 和自定義構建型別

37194 [flutter_tool] 更優雅地處理 Android sdkmanager 失敗

37405 向模組模板新增 .android/Flutter/flutter.iml

37752 在 flutter config 中移除死標誌 gradle-dir

9206 Android Embedding Refactor PR31:將平臺檢視與新的嵌入式和外掛 shim 整合。

9360 簡化 Android 上的應用包載入

9476 當觸控事件傳送到未知 Android 平臺檢視時,修復 NPE

9501 [android] 外部紋理必須縮放到填充畫布

9525 Android Embedding Refactor PR36:新增啟動畫面支援。

9895 Android Embedding PR37:透過 FlutterActivityAndFragmentDelegate 分離 FlutterActivity 和 FlutterFragment

9999 新增對 Android 可見密碼輸入型別支援

10250 Android Embedding Refactor 38:從 DartEntrypoint 中移除 AssetManager。

10413 將 Android Q insets.systemGestureInsets 傳遞給 Window

10424 修復 Android 嵌入式中的棄用警告

10481 Android embedding refactor pr40 新增靜態引擎快取

10771 構建時不使用 gradle 守護程序

11001 避免動態查詢 Android 引擎庫的符號

11015 從 Android 引擎 JAR 檔名中移除輸出目錄字首

Material

#

當然,Material 設計語言仍然是 Flutter 的一個主要關注點。

34869 [Material] 在 Range Slider 中正確呼叫 onChangeStart 和 onChangeEnd

34872 [Material] OutlineButtons 支援懸停、聚焦和按下時的邊框顏色

34906 修復 showLicensePage 上未使用的 [applicationIcon] 屬性

34932 為 TextFormField 添加了 onChanged 屬性

35075 允許在主題中自定義 SnackBar 的 content TextStyle

35282 向 Ink 構建方法新增 Container 備用方案

35496 [Material] Slider 和 Range Slider 值指示器形狀的文字比例和寬標籤修復

35499 添加了 MaterialApp.themeMode 以控制使用哪個主題。

35560 Material 小部件中基於 elevation 的暗黑主題疊加顏色支援

35878 為 showModalBottomSheet 新增使用根導航器的標誌

36028 修復 slider 首選高度

36088 新增 PopupMenuTheme 以允許對 Menu 的顏色、形狀、elevation、文字樣式進行主題化

36409 向 SearchDelegate 新增 searchFieldLabel,以便顯示自定義提示

36880 [Material] 建立 material Banner 元件

37038 將 SnackBar 更新為最新的 Material 規範。

37259 [Material] 新增對 Chips 上懸停、按下、聚焦和選中時文字顏色的支援。

37269 [Material] FAB 重構 - 移除不必要的 IconTheme

37355 新增 ThemeData.from() 方法以從 ColorScheme 構建 Theme

37403 向 textformfield 新增 ontap

37436 在輸入文字後隱藏文字選擇控制代碼

37556 [Material] 使 RawChip.selected 不可為空。

37636 新增 CheckboxListTile checkColor

37715 修復 markdown 連結格式

37825 FocusManager 的自動焦點高亮模式

37870 從 BottomNavigationBar 專案中移除 Header 標誌

37877 為 Tooltip Overlay 新增 DefaultTextStyle 祖先

37882 向 AboutListTile 新增 dense 屬性

38467 [Material] 向 FAB 和 FAB ThemeData 新增 splashColor

38621 [Material] 為 Dividers 建立主題,以啟用厚度自定義

38636 為 UserAccountsDrawerHeader 新增 arrowColor 選項 (#38608)

文字與輔助功能

#

此次釋出中,文字與輔助功能的最大變化是新增了 ColorFilter 支援,這使得您可以根據需要重新著色整個小部件樹,例如,為紅綠色色盲使用者調整應用。要檢視其實際應用,請參閱此ColorFilter 示例

35468 新增 colorFilterLayer/Widget

9641 讓 pushColorFilter 接受所有型別的 ColorFilters

9668 重構 ColorFilter 以擁有原生包裝器

9789 修復 ColorFilter.matrix 的 constness

34515 OutlineInputBorder 調整以適應過大的 borderRadius

35100 新增對平臺訊息 'TextInput.clearClient' 的處理(從平臺到框架)(#35054)。

35219 文字選擇選單顯示/隱藏場景

35493 不要使用表意基線作為 RenderPargraph 的基線

36974 多行選擇選單位置錯誤

37042 修復清除後不顯示選擇選單的問題

38573 Clamp scrollOffset 以防止 textfield 彈性

35487 修復 RenderFittedBox 當 child.size.isEmpty 時的情況

36243 允許語義標籤比原始文字短或長

36303 新增 sync star benchmark 用例

37158 修復 Semantics Debugger 中的 Textfields

37828 使 android_semantics_testing 使用 ENV 提供的 Android SDK 中的 adb

Web (技術預覽)

#

在此版本中,Web 平臺支援的技術預覽版工作仍在繼續,包括一個用於判斷應用是否在 Web 上執行的標誌。要檢視其實際應用,請參閱flutter_mazegen 示例中的 main.dart。要了解更多資訊,請參閱Flutter for web

36135 向 foundation 新增 kIsWeb 常量

34252 將 dwds 整合到 flutter tool 以支援 Web

34896 允許多根 Web 構建

35221 調整以從桌面和 Web 中排除 dev 和 beta 版本

36297 向 semantics 新增 multi-line 標誌

36465 使用 FlutterFeatures 配置 Web 和桌面裝置

36548 修復 Web 構建,回滾 build_modules 的版本號

36549 修復 Web 平臺的訊息編碼器中的數字編碼

37515 上游 Web 支援 IterableProperty

37637 在 RenderView 診斷中不呼叫 Platform.operatingSystem

37638 [web][upstream] 修復 Web 平臺的 debugPrintStack

37658 修復 dwds/web 構建的 windows 路徑

37712 [web][upstream] 最佳化 InactiveElements 的停用

37812 [web][upstream] 不為 Web 平臺註冊 exit/saveCompilationTrace,因為它們不可用

37815 重構 resident web runner 用法,以避免不支援 dwds 的 SDK 使用者

38499 更新 Web 編譯器並配置庫

桌面 (實驗性)

#

我們繼續推進 Flutter 對桌面平臺的實驗性支援。如果您想參與實驗,請參閱Flutter Desktop shells

32770 按任意按鈕按下即可關閉模態視窗

34660 為 Windows 和 Linux 新增 --target 支援

34712 修復 FocusTraversalPolicy 導致焦點丟失

34752 [linux] 從 GLFW 接收未修改的字元

35495 將 windows 和 macos chrome 開發者模式標記為易出錯

36197 修復 windows,從其他平臺排除小部件

36722 跳過易出錯的 Windows 測試

36784 [flutter_tool] 改進 Windows flutter clean 錯誤訊息

36845 改進 Windows 構建失敗訊息

36987 Flutter assemble for macos 第二版!

37211 滾動關閉時不要啟用滾輪

37342 使用閉包時修復 mouse region 崩潰

37344 修復 mouse region 重複渲染

37351 修復 macOS assemble 回滾捕獲到的錯誤

37365 僅在 debug 模式下構建 macOS 核心

37425 支援 macOS release 模式 (1/3)

37509 為 Pod env 指令碼使用 macOS ephemeral 目錄

37664 部分 macOS assemble 回滾

37891 Focus debug

38651 更新 macOS Podfile 模板平臺版本

9654 開始將 macOS 引擎與 view controller 分離

9672 為 macOS 嵌入新增 FLEDartProject

9745 修復 Windows 測試,避免將目錄作為檔案開啟。

9799 更新 buildroot 至 c4df4a7b 以引入 MSVC 2017 Update 9 (Windows)。

9835 [Windows] 替代 Windows shell 平臺實現

9953 [macos] 新增 binary messenger 的 reply

10009 [macos] 回滾對 FlutterCodecs 的檢查並重構訊息函式]

10189 [macos] 重新提交函式重構

11010 將 macOS FLE* 類重新命名為 Flutter*

36546 在 Windows 上取消跳過 date_picker_test,因為底層問題 19696 已修復。

框架

#

Flutter 的核心框架在此版本中獲得了一些重要功能,包括支援另外 24 種新區域設定(從南非荷蘭語到祖魯語)。

36589 更新 Localizations:添加了 24 種新區域設定(重寫)

33936 RawGestureDetector 的新引數,用於自定義語義對映

34202 從 _TableElement 中移除 _debugWillReattachChildren 斷言

34626 如果 error 或 no data,AsyncSnapshot.data 將丟擲異常

34895 移除 flutter_tools 對舊 AOT 快照的支援

34919 移除重複的錯誤部分

35132 透過在 _transformRect 中重用矩陣來減少瞬時變換的分配

35143 更多 HttpClientResponse Uint8List 修復

35149 更多 HttpClientResponse 實現 Stream修復

35232 新基準測試:Gesture semantics

35233 嘗試在工具未更改的情況下跳過 coverage shard

35245 更多準備 HttpClientResponse 實現 Uint8List

35246 嘗試在 post commit 時不跳過 coverage

35263 移除不必要的 ..toList()

35280 benchmarkWidgets.semanticsEnabled 預設為 false。

35288 正確應用 coverage skip math

35408 移除 print

35482 使用新的 service protocol 訊息名稱

35491 在 SemanticsNode 的 debug 屬性中包含 tags

35646 為 Socket implements Stream 做準備

35725 更新 annotated region findAll 實現以直接使用 Iterables。

35750 在錯誤訊息標題中使用句子大小寫

35762 重構 resident_runner 的 keymapping

35828 使用 dart-lang/sdk#31543 的解析清理 widgets/sliver_persistent_header.dart

35913 使 focus 示例更規範(且正確)

35932 使用 'flutter update-packages --force-upgrade' 升級 framework 包。

35979 最佳化 gesture recognizer 修復 #35658

36262 防止 Table._computeColumnWidths 中的無限迴圈

36302 Issues/30526 gc

36333 修復 sliver fixed pinned appbar

36396 最佳化 matrix_utils 中的 transformRect 和 transformPoint 方法。

36482 透過只繪製 100x100 的表面來加速 shader 預熱

36493 修復 child 重新排序時 sliver list 未佈局第一個子項

36503 停用 Firebase Test Lab smoke test 以解除 autoroller 阻止

36698 修復 iPhone 強制按壓鍵盤選擇崩潰

36768 向 Flutter.Error 事件新增 error count 欄位

36857 確保使用者丟擲的錯誤具有 ErrorSummary 節點

36867 從 TextStyle 新增對 StrutStyle 的引用

36955 提取公共 PlatformView 功能:Painting 和 Semantics

37187 在 MultiChildRenderObjectWidget 中使用 FlutterError

37275 最佳化 matrix_utils 中的 transformRect 和 transformPoint 方法…

37479 移除 ContainerParentDataMixin.detach 中無效的程式碼

37497 提取公共 PlatformView 功能:Gesture 和 PointerEvent

37703 PlatformViewLink,處理 PlatformViewSurface 的建立和 PlatformViewController 的處置

37790 Doc: Image.memory 只接受壓縮格式

37880 減少 mac 工作負載

38441 修復 growthDirection reversed 和 AxisDirection down 或 right 的 getOffsetToReveal

38463 在非 debug 模式下執行時,不為 _focusDebug 構建引數

38639 PlatformViewLink. cached surface 應為 Widget 型別

38686 重新命名 patent 檔案

38704 向 FocusNode 新增 canRequestFocus 切換

38710 PlatformViewLink: 將 CreatePlatformViewController 重新命名為 CreatePlatformViewCallback

35335 使用自定義異常類處理網路載入錯誤

35574 修復浮動固定 sliver app bar 的語義

35810 SliverFillRemaining 在 hasScrollBody 為 false 時考慮 child 大小

35941 SliverLayoutBuilder

引擎

#

在此版本中,核心引擎在各個方面都得到了許多改進。

9041 TextStyle.height 屬性作為字型大小的倍數,而不是 ascent+descent+leading 的倍數。

9089 為 GLFW 嵌入程式連線自定義事件迴圈互操作。

9329 透過意外的 self 引用修復了記憶體洩漏

9403 移除引擎中未使用的 ParagraphBuilder::AddText 變體

9419 具有二進位制訊息傳遞器

9423 平臺檢視已處置後,不要保留其輸入連線

9424 傳送第一個幀的計時資訊,不進行批次處理

9431 僅在平臺執行緒上生成弱指標

9436 添加了合併和取消合併 MessageLoopTaskQueues 的功能

9439 消除 FlutterView 中未使用的匯入

9452 將 RRect.scaleRadii 轉換為公共方法

9456 確保 run_tests 指令碼返回正確的錯誤程式碼。

9459 移除未使用/未實現的 shell 建構函式

9460 修復了 logLevel 過濾器錯誤,使其現在按預期工作。

9461 添加了用於保留中間引擎圖層的 API

9463 移除了新嵌入程式中未使用的匯入。

9466 重新啟用 Wuffs GIF 解碼器

9468 手動繪製波浪形裝飾的剩餘曲線

9485 新增 --observatory-host 開關

9486 重構影像和紋理管理以使用併發訊息佇列。

9489 處理混合雙向文字中最終尾隨空格的歧義方向性

9490 修復在設定 frame 前未重置平臺檢視變換的錯誤

9493 在 try job 上執行基準測試。

9495 修復 PlatformViews.mm 上的構建中斷

9498 通知框架在應用置於後臺時清除輸入連線 (#35054)。

9503 改進 Skia 的快取限制

9506 同步主執行緒和 GPU 執行緒以獲取第一個渲染幀

9508 支援 paint 上的影像濾鏡

9532 修復 FlutterOverlayView 在某些情況下未從 superview 中移除

9556 Skia 文字塑形模組的最小整合

9561 libtxt:修復 Font asset providers 持有的 SkFontStyleSets 的引用計數

9585 修復嵌入式可訪問性單元測試中的競爭條件

9589 修復了外掛 shim 系統中的外掛覆蓋錯誤。

9590 應用自將 runner 移植到 engine 倉庫以來在 topaz 中已合併的補丁

9591 文件化 //flutter/shell/common. 中的各種類。

9632 添加了 Doxyfile。

9633 挑選修復 flutter/flutter#35291

9640 將 EmbeddedViewParams 設為 unique_ptr

9461 修復了關於 settings unavailable GN arg build_glfw_shell 的警告

9651 將 mutators stack 處理移至 preroll

9652 Pipeline 允許能夠向前輸出的 continuation

9653 External view embedder 可以告知嵌入式檢視是否已發生變異

9655 允許嵌入程式為框架的訊息響應添加回調。

9660 ExternalViewEmbedder 可以在 pre-roll 後取消幀

9661 Raster 現在返回一個 enum 而不是 boolean

9663 Mutators Stack 重構

9685 修復 Picture.toImage 返回型別檢查和 api conform 測試。

9698 確保沒有響應處理器的平臺訊息可以被分派。

9713 解釋 OpacityLayer 為什麼有一個 offset 欄位

9717 修復了 logLevel 過濾器錯誤,使其現在按預期工作。(#9460)

9721 添加註釋以區分兩個快取路徑

9725 使 license 指令碼與最近更改的 Dart I/O stream API 相容

9727 新增 InputConnection 鎖定和解鎖的鉤子

9734 修復中文裝置上的退格鍵崩潰

9737 使用 libc++ 變體的 string view 並移除 FML 變體。

9741 將 FLEViewController 的 view 設為內部細節

9747 移除 get engine

9750 FLEViewController/Engine API 更改

9758 僅在 enable-skshaper 標誌開啟時包含 SkParagraph 標頭檔案

9762 如果庫無法按名稱載入,則回退到 libapp.so 的完全限定路徑。

9767 取消棄用 FlutterViewController 的 binaryMessenger。

9769 文件化 //flutter/shell/common/engine。

9772 修復 objcdoc 生成

9781 SendPlatformMessage 允許 null 訊息值

9797 移除中斷性斷言

9808 文件化 FontFeature 類

9809 文件化 //flutter/shell/common/rasterizer

9813 Picture::toImage 在 IO 執行緒上發生,無需螢幕表面。

9815 使持久快取的目錄成為 const 指標。

9816 僅在 Skia 接受影像資料所有權後才釋放它。

9825 在單幀編碼器中,在將編碼的影像緩衝區交給解碼器後釋放它

9828 使虛擬顯示器的視窗半透明

9847 開始將引擎雜湊新增到框架的 Info.plist 中。

9849 透過設定透明背景來保留 VD 內容的 alpha。

9850 向 semantics 新增 multi-line 標誌

9851 為 prefixing embedder.h 符號新增宏

9855 修復 _allowHeadlessExecution 缺失賦值

9859 修復 RTL 段落的 justify。

9867 修復了生成的 xml Info.plist 中的錯誤。

9873 將 clang 版本新增到 Info.plist

9875 簡化 buildtools

9890 僅在 debug 模式下記錄 dlopen 錯誤

9893 將 FlutterAppDelegate 的邏輯移至 FlutterPluginAppLifeCycleDelegate

9894 將 isMultiline 語義標誌新增到值中

9896 捕獲 ninja 命令的 stderr

9901 在 InstantiateImageCodec 中處理解壓後的影像

9905 在解壓影像時尊重 EXIF 資訊。

9906 更新 libcxx 和 libcxxabi 至 HEAD,為編譯器升級做準備。

9919 移除了未使用的方法。

9920 修復 Locale.toString 的快取

9922 分離生命週期協議

9923 修復 onReportTimings window hook 測試失敗

9924 不要嘗試使用未設定的 assets_dir 設定

9925 修復了 geometry 測試,使其反映 OffsetBase 比較運算子是偏序關係

9927 更新 Buildroot 版本

9929 更新編解碼器測試中無效資料的異常

9931 修復 SingleFrameCodec 中的重入處理

9932 在未處理的異常時,以錯誤程式碼退出 flutter_tester

9934 對 engine 測試執行器指令碼的更新

9935 修復中文裝置上的退格鍵崩潰 (#9734)

9936 將 development.key 從 buildroot 移出

9937 [platform view] 不讓 clipping view 和 interceptor view clipToBounds

9938 從 TextInputPlugin 中移除了 PlatformViewsController if-語句 (#34286)。

9939 向舊 FlutterView 添加了 hasRenderedFirstFrame() 以用於 Espresso (#36211)。

9948 [glfw] 在 glfw 嵌入程式中啟用 binary messenger 的 reply

9958 稍微清理 cirrus.yml 檔案

9961 修復 gradient_test 中的 assert 函式的返回型別

9977 修復 flutter/flutter #34791

9987 更新 GN 至 git_revision:152c5144ceed9592c20f0c8fd55769646077569b

10012 取消刪除已使用的方法

10021 添加了 DartExecutor API 用於查詢 ## 個待處理的 channel 回撥

10056 更新 .cirrus.yml

10063 跟蹤叢集並在 getGlyphPositionForCoordinates 中返回叢集邊界(emoji 修復)

10064 在 runtime_unittests 中停用 DartLifecycleTest::ShuttingDownTheVMShutsDownAllIsolates。

10068 修復了與隱式 self 相關的記憶體洩漏。

10069 為 flutter_web 啟用 DDK 中的 consts

10073 flutter_jit_runner fat 的基本結構

10074 更改 ParagraphBuilder 以使用子樣式中的字體系列替換父樣式中的字體系列

10075 更改 flutter runner 目標以用於 LUCI

10078 另一個 luci 修復

10109 快取查詢失敗的字體系列,以獲取字型集合

10127 跟蹤詳細的 LibTxt 指標

10128 開始將測試目標連結到 Flutter。

10151 [fuchsia] 修復名稱以反映 cmx 檔案

10155 src/third_party/dart a2aec5eb06...86dba81dec

10172 [dart_runner] 重新命名 dart 為 dart runner

10176 新增 flutter roll 提出的建議 Java 更改

10178 移除了對查詢 App.framework 的不必要呼叫。

10179 [dart_runner] dart jit runner 和 dart jit product runner

10195 允許嵌入程式控制 Flutter 圖層的組合。

10235 棄用 FlutterView#enableTransparentBackground

10242 移除死 Scenic Clipping 程式碼路徑。

10265 [dart-roll] 將 dart sdk 回滾到 80c4954d4d1d2a257005793d83b601f3ff2997a2

10273 移除最後一個對 AddPart() 的 final 呼叫

10282 從 sky_engine 匯出 FFI。

10295 修復 minikin patch 中的記憶體溢位

10296 修復 CI

10297 確保 SingleFrameCodec 在 ImageDecoder 呼叫其回撥之前保持存活

10298 再次修復 red build

10303 真正地使樹變綠。

10414 在 Window 上公開 max depth

10419 使 kernel 編譯器使用 host toolchain

10423 修復 mac gen_snapshot uploader

10430 新增 copy_gen_snapshots.py 工具

10477 新增 #else, #endif 條件註釋

10479 刪除 unused create_macos_gen_snapshot.py 指令碼

10485 刪除半冗餘的 try-jobs。

10629 修復 engine platformviewscontroller 洩漏

10637 文件化 thread test fixture。

10644 [flutter_runner] Port: 新增 connectToService,包裝 fdio_ns_connect。

10652 允許嵌入程式控制引擎關閉時的 Dart VM 生命週期。

10674 在從符號引用設定 AOT 快照時,使緩衝區大小成為可選。

10675 改進 flutter GDB 指令碼

10773 移除對已棄用的 AccessibilityNodeInfo boundsInParent API 的使用

10776 將 stub_ui 重新命名為 web_ui

10780 [flutter_runner] 改進幀排程

10781 [flutter] 在 GPU 任務執行器上建立 compositor context。

10782 更新 license 指令碼以處理 ANGLE

10783 使 firebase test 更 LUCI 友好

10786 移除 3 個半冗餘的 try-jobs

10787 將 |AddPart| 呼叫更改為 |AddChild|

10788 為 Skia 連線支援併發訊息迴圈的 SkExecutor。

10797 重新命名工件以匹配 Maven 約定

10799 添加了一個從位元組建立影像的測試。

10808 移除 flutter_kernel_sdk dart 指令碼

10809 [dart:zircon] 移植 Cache 可重用控制代碼等待物件

10815 為空檔案 asset 返回空對映

10816 向 FlutterViewController 新增 firstFrameDidRender

10823 為 engine 公開 isolateId

10941 在 run_tests.py 中報告測試失敗

10952 將 SemanticsNode#children 列表設為非空

10955 修復格式

10956 將 license 塊掃描從 5k 增加到 6k

11002 移除帶有懸空指標的 tracing 宏

11004 Trace RasterCacheResult::Draw

11005 從 Cirrus 中移除 firebase test

11007 更新 README.md

11011 將引擎初始化為 running 狀態,以匹配 animator 的預設狀態

11012 從 text API 中移除 ParagraphImpl 類

11013 移除在 flutter/tools/gn 中覆蓋 mac_sdk_path 的能力

11024 新增 GLFW 桌面庫的 _glfw 版本

11027 修復第一個幀邏輯

11029 為舊平臺停用 TaskDescription 建構函式的棄用警告

11033 移除 OS 版本

11034 顯示所有 license diff

11038 使 JIT 在 iPhone armv7 上工作

11040 在 run_test.py 中隱藏 verbose dart snapshot

11041 向 FrameTiming 新增 BroadcastStream

11046 將 ccls 配置檔案新增到 .gitignore

11052 移除 MakeCrossContextFromPixmap 中未使用的 dstColorSpace 引數

11056 將 Skia typefaces 在 font style set 中排序為一致的順序

11062 為自定義嵌入程式任務執行器提供一個佔位符 queue ID。

11067 對 Robolectric 測試框架進行的小更新

11068 對 Robolectric 測試框架的更多更新

11075 [dynamic_thread_merging] 僅在合併幀時重新提交

工具

#

一如既往,Flutter 的端到端體驗嚴重依賴於其工具。考慮到這一點,除了下面列出的專注於 flutter CLI 工具的 PR 之外,您還應該檢視 IntelliJ/Android Studio Flutter 外掛、VSCode Flutter 外掛和 Dart DevTools 的以下版本:

此外,此次釋出還在底層進行了大量工作,以提供更好、更具操作性的錯誤訊息。您可以在 Flutter 使用者體驗團隊的這篇博文中閱讀相關細節。

32511 渲染錯誤,其根本原因在小部件層,應具有對小部件的引用

28090 確保 cache dirs 和 files 具有適當的許可權

32816 新增 flutter assemble 的初始實現

34624 分解 flutter doctor 的驗證和結果

34785 調整模擬器的顯示名稱

34794 向 daemon 中的 devices 新增 emulatorID 欄位

35084 將 findTargetDevices 移至 DeviceManager

35092 新增 FlutterProjectFactory 以便內部覆蓋。

35186 使 tool coverage collection 對 sentinel coverage data 具有彈性

35188 確保在收集 coverage 前暫停 test isolate

35192 不因 coverage 而阻止任何 presubmit

35231 修復 coverage collection

35367 在生成的測試程式碼中向 StreamChannel 新增型別。

35392 在 testbed 中新增 timer 檢查和 Fake http client

35406 從 resident runner 中重構 signal 和 command line handler

35465 將 update-packages 標記為非實驗性

35467 將 update-packages 標記為非實驗性

35480 更新 precache 命令的幫助訊息以減少混淆

35681 在 dartdevc 中停用增量編譯器

35765 在 flutter_tools 中使用公共 _registerService RPC

35767 為 tools codecoverage 設定 0% 的目標

35839 使用 pub run 來建立測試並移除 [INFO] 日誌

35846 將 reload 和 restart 處理移至 terminal

36017 將 reporting 檔案移至 reporting/

36082 新增更好的 JSON-RPC 異常處理

36084 處理 google3 版本的 pb

36105 [flutter_tool] 捕獲專案建立過程中的 yaml 解析失敗

36109 在可能的情況下捕獲 runChecked* 丟擲的異常

36122 確保 add-to-app 構建包(來自外部 xcodebuild/gradlew)傳送分析資料

36138 為 flutter tools 實現功能標誌系統

36199 如果 isolate 仍在暫停狀態,則不執行 flutterExit

36208 [flutter_tool] 允許在沒有終端附加的情況下發送分析資料

36213 使用 DeviceManager 而不是 device 來確定裝置是否支援專案。

36218 在 flutter pub context 中釋放鎖

36237 建議使用 CDN 支援的最終版本來儲存 trunk specs 倉庫。

36240 重新排列 flutter assemble 實現

36288 在非 macOS 平臺上例項化 IOSDevice 時丟擲異常

36289 FakeHttpClientResponse 改進

36318 將 flutter_runner 包含在 precache 工件中。

36327 修復呼叫 ideviceinstaller 時未傳遞 DYLD_LIBRARY_PATH 的問題

36331 對 precache 幫助文字進行的小修復(第二次嘗試)

36434 清理 flutter driver 裝置檢測。

36481 移除未經測試的程式碼

36490 [flutter_tool] 在命令執行前傳送分析資料

36507 提高引擎版本

36513 修復 flutter pub -v

36556 修復 usage test 以使用本地 usage

36560 [flutter_tools] 向 README.md 新增一些有用的命令

36564 確保 fx flutter attach 能找到裝置

36569 對 flutter_tools 進行一些小的清理

36570 對 tool_coverage 工具進行一些小的修復

36585 將 build outputs 放在 dart tool 下

36598 公開將 dart 編譯為 kernel 以用於 VM 的功能

36679 向 flutter format 命令新增 line-length

36727 為 create 新增缺少的配置

36773 公開 build-dir 配置選項

36774 使用庫名稱謂詞引數化 CoverageCollector

36785 [flutter_tool] 清理 usage 事件和自定義維度

36787 檢查目錄而不是路徑分隔符

36832 移除對 analyzer 訊息的易出錯檢查。

37036 構建號(+ 之後的部分)被記錄為可選,如果不存在,則使用完整的應用版本

37044 [flutter_tool] 使一些檔案操作同步

37186 [flutter_tool] Usage 重構清理

37196 [flutter_tool] 捕獲 'adb devices' 的 ProcessException

37198 [flutter_tool] 重試傳送第一個崩潰報告

37210 構建 profile 時不剝離符號

37217 為 App.framework 隱藏 spotlight 符號

37331 [flutter_tool] 新增缺少的 toString()

37345 [flutter_tool] 在分析時間戳中包含本地時區

37378 透過 COMPILER_INDEX_STORE_ENABLE=NO 引數停用 CI 中的 xcode 索引

37422 [flutter_tool] 其他 flutter manifest yaml 驗證

37440 執行 flutter run 後丟擲 HttpException 時列印訊息

37457 當 flavor 包含下劃線時查詢 app bundle

37500 避免終止 Flutter 工具程序 (#37471)

37512 在 debug 構建中啟用 track widget creation

37514 [flutter_tool] 移除意外的分析螢幕傳送

37521 使 xcodeSelectPath 也捕獲 ArgumentError

37595 關閉 #37593 新增 flutter_export_environment.sh 到 gitignore

37654 向 flutter tools BUILD.gn 新增缺少的庫

37731 新增元資料以指示宿主應用是否包含 Flutter 模組

37735 從 flutter run 命令中移除 no-build 標誌

37743 處理從 fe server 丟擲的 map 和 reject

37792 在透過 Invoke-WebRequest 下載 Dart SDK 時停用進度條

37863 公開 timeline 事件名稱,以便它們可以在其他執行 tracing 的系統中使用

37871 捕獲快取目錄建立失敗

37900 偵聽 ExtensionEvent 而不是 TimelineEvent

37958 捕獲由 bad simctl output 引起的 FormatException

37966 在 flutter clean 時移除 ephemeral 目錄

37994 移除 no-constant-update-2018,底層問題已解決。

38101 捕獲 flutter create 丟擲的檔案系統異常

38102 修復被隱式向下轉換隱藏的型別錯誤

38296 使用通用的 emulator/device 列表

38339 [flutter_tool] 將 create 語言預設值改為 swift 和 kotlin

38342BUILD.gn 中移除 bsdiff

38353 [flutter_tool] 清理 Observatory 連線錯誤處理

38472 [flutter_tool] 修復 manifest yaml 驗證中的錯誤

38486 捕獲由 json_rpc 拋入 Zone 的錯誤

38490 修復 publish cmd

38497 處理來自 frontend server 的意外退出

38575 真正修復 rpc exception

38586 如果編譯有錯誤,則不重新載入

38637 [flutter_tool] 對於格式錯誤的儲存 URL 覆蓋,丟擲 tool exit

38652 移除死程式碼

36860 移除 Chain terse 解析

36874 調整 features 的措辭

36884 unbreak build_runner

全部 PR 列表

#

您可以在此處檢視此版本中已合併的 PR 的完整列表。