Flutter 1.9.1 版本說明
大家好,歡迎來到 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 文件
34665 (公告)Selection handles position is off
35136 (公告)更新 Dark Theme 的 disabledColor 為 White38
35785 (公告)移除隱式動畫小部件中的 reverseDuration,因為它會被忽略。
36030 (公告)[Material] 實現 TooltipTheme 和 Tooltip.textStyle,修復 Tooltip debugLabel,更新 Tooltip 預設值
36106 (公告)更新 ColorScheme.dark() 顏色以匹配 Material Dark 主題規範
36217 (公告)將 Mouse 從 Listener 中分離
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 小部件(在“文字與輔助功能”部分有介紹)。要檢視這些小部件的實際應用,請檢視簡短的ToggleButtons和ColorFilter示例。此外,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
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 的以下版本:
- DevTools 0.1.6 版本說明 - 2019 年 9 月 5 日
- IntelliJ Plugin M39 版本說明 - 2019 年 9 月 3 日
- VSCode Plugin v3.4 - 2019 年 9 月 3 日
- DevTools 0.1.5 版本說明 - 2019 年 8 月 5 日
- VSCode Plugin v3.3 - 2019 年 8 月 2 日
- IntelliJ Plugin M38 版本說明 - 2019 年 8 月 2 日
- DevTools 0.1.4 版本說明 - 2019 年 7 月 19 日
- VSCode Plugin v3.2 - 2019 年 6 月 28 日
此外,此次釋出還在底層進行了大量工作,以提供更好、更具操作性的錯誤訊息。您可以在 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
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 的完整列表。