歡迎來到 Flutter 1.12,這是我們迄今為止最大的穩定版本!在此版本中,我們合併了來自 188 位貢獻者的 1,905 個 Pull Request,包括來自 Google 內部和外部的貢獻者!請參閱下表瞭解每個版本中的 PR 數量。在過去的一年中,每個版本的 PR 數量都在增長(Flutter 1.9 除外,它是一個特殊的版本,用於支援 Catalina)。在最新的 GitHub Octoverse 報告中,Flutter 被列為 GitHub 上最活躍的 3 個倉庫之一!

隨著假期的臨近,我們想對我們這些信任 Flutter、推廣 Flutter 併為 Flutter 做出貢獻的了不起的開發者社群表示最誠摯的感謝。這對我們所有人來說都是非凡的一年!我們期待著在未來幾年與您合作。

一如既往,您可以在下方找到有趣的 PR。此版本中有許多值得關注的新功能,包括:

  • 一些破壞性的 API 更改
  • 一些被捕獲並修復的嚴重問題
  • Web 支援現已在 Beta 版頻道中提供
  • macOS 支援已在 1.13 版本中於開發版頻道啟用
  • 改進的 SDK,可將 Flutter 新增到現有的 Android/iOS 應用
  • iOS 13 視覺重新整理,包括對 iOS 黑暗模式的支援
  • 增強的工具體驗
  • 新控制元件和功能
  • 等等!

破壞性變更

#

總的來說,我們希望避免在 Flutter、其外掛或其包中引入破壞性更改。然而,當我們需要使我們的 API 更直觀時,這有時是不可避免的。我們實施了一個新流程,邀請您提交測試以幫助我們檢測破壞性更改。有關更多資訊,請參閱 Ian Hickson 在 flutter-announce 上的這篇帖子,以及 Flutter wiki 上的破壞性更改策略

以下列表包含此版本中的破壞性更改。請參閱相關公告,以便您可以繼續進行您的程式碼。

37024 使用 SliverLayoutBuilder 實現 PageView,棄用 RenderSliverFillViewport

37739 修復 repeat(reverse: true) 和 animateWith 的 AnimationStatus

37896 為 MouseRegion 新增不透明度控制。為 Layer 新增 findAnnotations。

38481 定時器選擇器精度修訂

38568 標準化 clipBehavior 的斷言檢查

39079 修復熱身幀期間 widget 被構建兩次的問題

39440 允許初始路由中的間隙

39919 CupertinoDatePicker & CupertinoTimerPicker 黑暗模式

40166 在推送和彈出路由時添加了正確的焦點處理

40179 更新 PopupMenu 佈局

40566 刪除 CupertinoSystemColors,改用 CupertinoColors

40690 CupertinoPageScaffold 黑暗模式

41220 向使用 InkWell 的控制元件新增 ActivateAction。

41857 更改暗色主題的elevation overlay,使其使用 colorScheme.onSurface

42449 將 TextField 的最小高度從 40 增加到 48

42470 無多行密碼欄位

42479 使 DropdownButton 的 disabledHint 和 hint 行為一致

45135 新增延遲渲染第一幀的選項

嚴重崩潰和效能 bug

#

在每個穩定版本中,我們都致力於提高 Flutter 的質量。在 1.12 版本中,我們修復了幾個嚴重問題;這包括以下崩潰和效能問題。

40009 向 _IndicatorPainter._tabOffsetsEqual() 新增空值檢查以防止崩潰

40263 修復 flutter doctor 中 vswhere 搜尋時的崩潰

40786 修復缺失安裝時的 vswhere 查詢崩潰

42342 修復 DropdownButton 同時定義 hint 和 selectedItemBuilder 時的崩潰

44610 createState 斷言的錯誤訊息

38814 新增 iOS backdrop filter 基準測試

38821 快取游標引數

38861 將已棄用的 onReportTimings 替換為 frameTimings

39439 測量 iOS CPU/GPU 百分比

43676 允許多個 TimingsCallbacks

45050 為 picture raster cache 新增效能測試

新功能

#

Flutter 1.12 引入了多項新功能,包括 SliverOpacity 控制元件、SliverAnimatedList,以及為 SliverAppBar 配置拉伸效果的能力。

37416 新增 MediaQuery.systemGestureInsets 以支援 Android Q

39857 更新 ToggleButtons 約束預設值並新增新的約束引數

40161 在 PageRouteBuilder 中新增 fullscreenDialog 引數

40461 實現 DropdownButton.selectedItemBuilder

41415 公開用於調整影像快取大小的 API

42250 SliverAppBar - 可配置的過滾動拉伸和回撥功能 & FlexibleSpaceBar 支援

42485 重新發布 SliverAnimatedList。

42842 向 "showDialog" 和 "showGeneralDialog" 新增 "navigator" 選項

43286 FadeInImage 支援 cacheWidth 和 cacheHeight

44289 SliverOpacity

45127 SliverIgnorePointer

45432 使用 RenderSliverPadding 為 SliverFillViewport 新增內邊距

iOS 支援

#

iOS 仍然是 Flutter 的一個重要投資領域。在此版本中,我們對 Cupertino 庫進行了視覺重新整理,以匹配 iOS 13 的外觀。我們現在在 Cupertino 控制元件中支援黑暗模式,添加了兩個新控制元件 CupertinoContextMenuCupertinoSlidingSegmentedControl,並對分段控制元件、CupertinoAlertDialogCupertinoDatePicker 進行了改進。

36871 審計 defaultTargetPlatform 的使用

37719 CupertinoDynamicColor 及相關類

38712 iOS 安裝失敗時顯示程序錯誤

39056 修復了背景顏色相關的問題 #34741

39215 CupertinoActionSheet 黑暗模式和精度

39289 CupertinoActivityIndicator & CupertinoApp 黑暗模式

39430 使 CupertinoDynamicColor 可以常量構造

39463 更新驗證以支援 Xcode11 版本

39585 刪除 iOS/USB 偽像的回退程式碼

39590 修復 CupertinoPageRoute 中的使用者手勢

39765 CupertinoButton & 底部標籤欄黑暗模式

39927 當傳入 null 時,使 CupertinoDynamicColor.resolve 返回 null

40007 CupertinoAlertDialog 黑暗模式 & CupertinoActionSheet 精度

40100 修復在選項卡模板中處理焦點節點時的相關問題

40189 黑暗模式 CupertinoNavigationBar

40447 為 flutter run 實現 mdns

40454 黑暗模式 R: 重新整理控制元件

40466 ModalRoutes 在 (cupertino) 彈出過渡進行時忽略輸入

40864 將 iOS 和 Android 的 gitignore 規則移至資料夾

41326 在 TextField 中選擇時發生異常

41355 修復不良縮排(主要在集合字面量周圍)

41384 [flutter_tools] 向分析報告 iOS mDNS 查詢失敗

41431 Cupertino { TabScafold, TextSelection, TextField } 黑暗模式 & 次要精度更新

41473 缺失的尾隨逗號

41482 [flutter_tool] 新增 iOS-mdns 回退成功/失敗的分析事件

41644 正確縮排函式引數

41799 改進的 iOS 13 捲軸精度

41828 在外掛模板中設定 DEFINES_MODULE=YES

41892 修復 CupertinoActivityIndicator 半徑

42025 本地化重新整理

42032 更新 CupertinoActivityIndicator 顏色和漸變

42533 為文字欄位停用箭頭鍵焦點導航

42550 向 TextField 和 TextFormField 新增 enableSuggestions 標誌

42563 為 CupertinoSlider 新增滑塊顏色自定義功能

42602 當 CupertinoPageRoute 的路由構建器返回 null 時,正確丟擲 FlutterError

42775 CupertinoSlidingSegmentedControl

42790 以不同的方式停用文字欄位中的向上/向下箭頭焦點導航。

42924 CupertinoDialogAction 缺少 super 呼叫

42964 使用 buildSettings 中的 PRODUCT_BUNDLE_IDENTIFIER 來查詢 iOS 上正確的 bundle ID,當使用 flavors 時

42967 使用 MediaQuery viewInsets 填充 CupertinoAlertDialog

43918 CupertinoContextMenu (iOS 13)

43932 更新 CupertinoSlidingSegmentedControl 控制元件/反饋機制

44149 在 CupertinoDatePicker 日期模式中應用 minimumDate & maximumDate 約束

44391 分段控制元件快速雙擊修復

44551 刪除新的未使用的元素

44743 對本地化生成輸出進行排序

44870 新增 -runFirstLaunch 提示文字

45124 分析 dartpad

11350 Firebase 測試 iOS 平臺檢視

11390 preventDefault on touchend 以顯示 iOS 鍵盤

11413 iOS 模擬器單元測試似乎沒有考慮整個編譯單元

11530 建立 iOS 框架時可選地剝離 bitcode

11652 iOS 平臺檢視突變 XCUITests

11802 調整 iOS 幀開始時間以匹配平臺資訊

11807 修復 iOS 上的泰語母音刪除錯誤

11817 針對 iOS 不規則輸入事件的傳遞進行平滑處理

11886 在 iOS 嵌入式引擎中移除多餘的冗餘通道設定

12078 分別管理 iOS 上下文

12084 將與使用者通知相關的方法的可用性限制為 iOS 10.0

12192 在 iOS 上更新文字欄位位置,作為拼寫檢查的預備工作

12295 問題 13238:在 iOS 上,噹噹前方向不允許時,強制更改方向

12404 支援 iOS 開關上的可訪問性標籤。

12990 修復 iOS 上的 a11y 崩潰

13029 iOS 的最小測試工具

13051 不要為 Metal 構建而提升 iOS 部署目標。

13093 iOS 平臺檢視:修復了觀察者的過度釋放。

13170 問題 13238:在 iOS 上,噹噹前方向不允許時,強制更改方向

13449 修復了當多個平臺檢視在場景中時 iOS 崩潰

13469 修復 iOS 上過期的平臺檢視 gr 上下文

13651 修復了 iOS 橫向可訪問性滾動事件的滾動方向。

13852 在 iOS insertText 時不預設為下游親和性

13857 防禦性程式設計,防止因引用死的可訪問性橋而在 iOS 上出現孤立的語義物件

1370 [camera] 暫停/恢復 Android & iOS 的影片錄製

1999 [Connectivity] 新增一個方法以在 iOS 上請求位置(適用於 iOS 13)

2052 [instrumentation_adapter] 新增存根 iOS 實現和示例應用程式

2068 [google_maps_flutter] 修復 iOS MyLocationButton 在 iOS 上的問題

2083 [image_picker] 修復了在 iOS 13 及更高版本中選擇影片時的崩潰。

2131 [share]修復在設定 subject 為 null 時 iOS 崩潰

2139 [google_maps_flutter] 為減少 iOS 警告新增 NonNull 宏

2191 [image_picker] 修復 iOS 構建和分析器警告

2192 [in_app_purchase] 修復 iOS 構建警告

2275 更新 Cirrus 以在 13.2 和 Xcode 11 上建立 IOS 模擬器

2281 [connectivity] 修復 iOS 的可達性流

Android

#

在此版本中,我們合併了一系列更改以支援 Android 10,包括新的活動縮放過渡。

37526 捕獲 Gradle 更新期間的錯誤

39126 在 Gradle 3.5 中修復應用捆綁包

39145 在 Gradle 包裝器目錄中新增缺失的檔案

39312 讓 flutter 構建的 aar 使用本地引擎

39457 在 build apk 和 appbundle 中記錄標誌

40640 從 Gradle 構建中排除非 Android 外掛

41698 下載 Android x64 release artifacts

41933 上傳 x64 Android host release

41935 [Android 10] Activity 縮放過渡

41946 在構建 appbundle 時不驗證 Android SDK

42378 從 flutter.gradle 中移除 println

42401 為 Flutter 新增對 Android x86_64 ABI 的支援

42508 新增 Android x64 profile artifacts

42966 擴充套件重新丟擲的 Gradle 錯誤範圍

43245 在 Android manifest 模板的 android:configChanges 中新增 smallestScreenSize

43282 針對 Android 目標平臺實現使用 assemble 進行 AOT 構建

43876 重構 flutter.gradle 以直接使用 assemble

44534 透過併發執行 gen_snapshot 來提高 APK 構建效能(約 50%)

45139 更新 Android CPU 裝置檢測

11345 [Android] 將使用 PlatformViews 所需的 MINIMAL_SDK 寫入異常訊息

11441 Android 10+ View.setSystemGestureExclusionRects

11451 Android 10+ View.getSystemGestureExclusionRects

12085 在 Android Q 上啟用平臺檢視鍵盤輸入

13059 Android 目標建立最終 zip artifacts

13099 NO_SUGGESTIONS 鍵盤標誌在 Android 中

13262 在 Android 上添加了語義標題支援。

2003 [video_player] 添加了 formatHint 以覆蓋 Android 上的影片格式

2029 修復了在 API 低於 24 的情況下暫停或恢復影片時的 Android 崩潰。

2049 [path_provider] Android: 支援多個外部儲存選項

2208 刪除所有 example/android/app/gradle.properties 檔案

2216 [battery] 使用 android.arch.lifecycle 而不是 androidx.lifecycle:lifecycle 在

2239 [camera] Android: 透過建立請求套件提高影像流傳輸效率…

新增到 App 功能

#

我們對“新增到 App”功能進行了重大升級,該功能允許您將 Flutter 模組整合到 Android 或 iOS 應用中。迫不及待想試試?請檢視新增到 App 的文件

41666 使用新的 Android 嵌入器生成專案

44369 翻轉 enable-android-embedding-v2 標誌

40810 當發生 AndroidX 故障時重新啟用 AAR 外掛

41820 添加了 SystemNavigator.pop "animated" 引數。

12752 允許使用者選擇 SystemNavigator.pop 是否在 iOS 上設定為動畫。

12069 將 FlutterMain 的呼叫摺疊到 FlutterEngine 建構函式中

39945 添加了新的生命週期狀態

11913 添加了新的生命週期列舉

45115 修復 ios_add2app_life_cycle 許可證

45133 重新發布生命週期列舉並修復 scheduleforcedframe

45430 暫時取消 detached 訊息,直到我們能妥善處理它

9525 Android Embedding Refactor PR36: 新增啟動螢幕支援。

9506 同步主執行緒和 GPU 執行緒以進行第一次渲染幀

39600 讓 Material BackButton 擁有自定義的 onPressed 處理程式

9952 iOS:修復了第一個幀的回撥,使其不依賴於啟動螢幕。

10145 添加了測試第一個幀回撥是否被呼叫的整合測試

42708 測試 Android 嵌入器 v2

43221 將示例遷移到 Android 嵌入器 v2

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

11890 新增一些 AppLifecycleTests

12128 當 FlutterViewController 不可見時,使其停止傳送 inactive/pause 生命週期事件

12232 FlutterViewController 通知將在 dealloc 時傳送

13280 Android 嵌入器 API 更新以支援外掛生態系統

13349 將 DartExecutor 棄用為 BinaryMessenger,並添加了 getBinaryMessenger() 方法。(#43202)

13432 在分離時釋放 shim 繫結

2232 [multiple] V2 嵌入器外掛使用 compileOnly

1323 [firebase_core][firebase_analytics] 修復了傳遞式生命週期依賴項的 bug

13445 如果沒有 FlutterView,則忽略 onConfigurationChanged

44499 當模組使用僅 v1 外掛時顯示警告

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

13474 在 Android 上建立文字輸入外掛時請求重新附加

43959 響應 TextInputClient.reattach 訊息。

509 在執行測試前強制開啟手機螢幕。

11792 開始記錄丟棄平臺訊息的警告。

12167 通道緩衝區

40165 通道緩衝區

12402 調整通道緩衝區大小

6879 允許在未初始化引擎的情況下釋放 FlutterViewController

9329 透過意外的隱式 self 保留修復了記憶體洩漏

9347 代理二進位制訊息

9419 有一個二進位制訊息

8387 將資源上下文設為 iOS 上的主上下文

11798 使用單獨的 IOSGLContext 物件管理資源和 onscreen 上下文

12277 使用單獨的 IOSGLContext 物件管理資源和 onscreen 上下文

13396 在檢視控制器被刪除時清理 GL 資源。

39157 使用 Gradle 的新 Maven 偽件

39503 從新增到 App 的流程中移除 bitcode=NO

36793 將 Flutter 模組 App.framework 作為本地 CocoaPod pod 提供,由宿主應用程式安裝

37966 在 flutter clean 期間移除臨時目錄

40302 為 FlutterPluginRegistrant 設定 DEFINES_MODULE 以生成 modulemap

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

36805 允許宿主應用程式中的 flavors 和自定義構建型別

26630 將 flutter_assets 移至 App.framework

31463 停用所有 Dart 指紋識別器

35217 新增 flutter build aar

40927 使模組 pod 標頭檔案公開

44065 構建 iOS 框架

37206 測試由 AAR 構建的模組是否包含正確的 assets 和 artifacts

44127 構建 aar 時列印如何使用這些 artifacts 的說明

23782 將 flutter_shared assets 新增到模組 artifact

22707 Gradle 外掛支援將 flutter 新增為另一個 Android 應用的子專案

9893 將 FlutterAppDelegate 中的邏輯移至 FlutterPluginAppLifeCycleDelegate

9922 分離生命週期協議

44026 如果外掛僅支援 embedding v2 但應用不支援,則退出工具

44214 修復外掛的 v1 嵌入器支援啟發式

43994 flutter build aar 也應將外掛構建為 AAR

13455 自動註冊 FlutterEngine 中的外掛。(#43855)

44011 將外掛註冊器移至 io.flutter.plugins 並新增 @Keep 註釋…

44166 在 v2 外掛模板中新增 v1 外掛註冊函式

13394 移除多路複用的 Flutter Android 生命週期。(#43663)

45557 在生成的外掛檔案中添加註釋

45379 在專案中新增 .flutter-plugins-dependencies,其中包含應用程式的外掛依賴圖

3850 支援在單個專案中同時編輯 Flutter 和 Android

4097 支援在 Android Studio 中除錯新增到 App 的模組

4129 最佳化新增到 App 支援的粗糙之處

4062 重新啟用新增到 App 專案的附加按鈕

4004 編輯在 Android Studio 中建立的模組

33297 儀器化新增到 App 的流程

33458 新增到 App 的測量

34189 儀器化 include_flutter.groovy 和 xcode_backend.sh 的使用

13289 重新啟動 Engine 時記住上次使用的入口點。

12370 添加了預設入口點變數以匹配 Android 語法。

10823 為引擎公開 isolateId

13264 重新啟動 Engine 時記住上次使用的入口點。

13789 將最近的包新增到 javadoc 列表

10481 Android 嵌入器重構 pr40 新增靜態引擎快取

29946 讓 CupertinoPageScaffold 點選狀態列以滾動到頂部

12587 將處理狀態列觸控的邏輯分離到自己的函式中

44638 新增用於建立模板幫助文字的模組

9351 Android Embedding Refactor PR32: 清理新嵌入器中的日誌。

6447 iOS 嵌入器重構

41794 更新了 SystemNavigator.pop 的文件字串。

9304 使用匹配的 UIKit 棄用裝飾 UIApplicationDelegate 包裝器

266 [firebase_performance] 支援 v2 Android 嵌入器

274 [firebase_core] v2 嵌入器 API

275 [firebase_ml_vision] v2 嵌入器 API

282 [firebase_remote_config] 支援 v2 Android 嵌入器。

287 [firebase_database] 支援 v2 Android 嵌入器。

1266 [firebase_analytics] 支援 Android v2 嵌入器

1295 [firebase_storage] 支援 Android v2 嵌入器

1369 升級 in-app-messaging 到外掛 API v2

1370 升級 crashlytics 到 v2 外掛 API

1372 [firebase_dynamic_links] 支援 v2 嵌入器

2142 [Connectivity] 遷移到新的 Android 嵌入器

2152 [battery] 支援 v2 Android 嵌入器

2155 [in_app_purchase] 遷移到 v2 Android 嵌入器

2156 [Share] 支援 v2 Android 嵌入器。

2157 [url_launcher] 遷移到新的嵌入器

2160 [package_info] 支援 v2 Android 嵌入器(帶 e2e 測試)

2162 [shared_preferences] 支援 v2 Android 嵌入器。

2163 [device_info] 支援 v2 Android 嵌入器。

2164 [sensor] 支援 v2 Android 嵌入器。

2165 [camera] 遷移到新的嵌入器

2167 [quick_actions] 支援 v2 Android 嵌入器。

2169 [flutter_webview] 遷移到新的嵌入器

2193 [android_alarm_manager] 遷移到 V2 Android 嵌入器

2195 [android_intent] 清理 V2 遷移

2196 [webview_flutter] (瑣碎) 新增 V2 警告

2200 [flutter_webview] 恢復 v2 嵌入器支援

2204 [url_launcher] 重新登陸 v2 嵌入器支援

2209 [webview_flutter] 重新登陸支援 v2 嵌入器支援

2226 [video_player] 新增 v2 嵌入器支援

2241 [Shared_preferences]抑制警告

2284 [path_provider] 為新增 v2 嵌入器支援

2327 [android_alarm_manager] 將最低 Flutter 版本更新到 1.12.0

43461 修復了 Swift 整合測試中可選型別的使用。

13423 自動銷燬由 FlutterActivity 或 FlutterFragment 建立的 FlutterEngine。

42958 停用整合測試和新增到 App 模板的 bitcode

13428 在連結時為 darwin dylibs 設定安裝名稱

41333 合併新增到 App 中的 Flutter 資源

39747 修復 Gradle 中的型別不匹配

39986 預設在 release 模式下啟用 Proguard

40181 更新 Kotlin 和 Gradle 版本

40282 翻轉 proguard 的預設值

40440 重新命名 useProguard 方法,以免 Gradle 混淆

40453 啟用 R8

40610 啟用資源壓縮器

40900 停止使用 Gradle 的已棄用功能

40925 預設在新專案中使用 AndroidX

41142 將嵌入器作為 API 依賴項新增,而不是僅編譯依賴項

41251 將示例和測試遷移到 AndroidX

41254 測試 flutter 資源是否包含在 APK 中

41885 在外掛中包含嵌入器傳遞依賴項

41942 使用 mergeResourcesProvider 而不是已棄用的 mergeResources

42022 修復了煙霧測試

42306 確保 flutter 資源已複製到 AAR 中

42352 向 abstract_method_smoke_test 新增 android.permission.WAKE_LOCK 許可權

42360 為新的 Android 嵌入器新增煙霧測試

42548 當應用未使用 AndroidX 時,顯示訊息並記錄事件

42684 在讀取現有 pro…時移除 isNewAndroidEmbeddingEnabled 標誌

42709 在 Windows 上測試 Gradle

42981 移除 GeneratedPluginRegistrant.java

43187 確保 android.enableR8 被追加到新行

43479 重構 gradle.dart

43669 如果 AndroidManifest.xml 不存在,則不讀取它

43674 新增缺失的匯入

43675 修復裝置實驗室測試

43927 修復 stdout 測試

43941 gradle.dart 重構後的調整

44301 在將外掛構建為 AAR 時,不列印如何使用 AAR

44243 使用本地引擎構建本地 Maven 儲存庫

44302 在 debug 模式下構建本地引擎時,不新增 x86 或 x64

44637 附加程式會檢視未來的 observatory URIs

44783 將 ProcessException 轉發給錯誤處理程式

44797 預設構建所有構建變體的 AAR

45439 如果 mdns 返回 null,則回退到協議發現

45579 為傳遞式外掛依賴項新增整合測試

45743 Android 日誌讀取器讀取任何最近的日誌

45937 處理 lastLogcatTimestamp 為 null 的情況

46040 在 beta、dev 和 stable 頻道中啟用 Android 嵌入器 v2

46101 移除 flutterBuildPluginAsAarFeature 標誌

14136 擴充套件了我們的 scenario_app 文件。

14094 開始指定執行測試的作業系統版本。

13421 FlutterAppDelegate: 添加了空生命週期方法

13073 從通知中心移除了保留週期。

13006 重構:FlutterDartProject

44782 更新了 flutter/examples 以更好地符合新的嵌入器:移除了對 FlutterApplication 的引用,刪除了所有不必要的 MainActivity,移除了所有對 GeneratedPluginRegistrant 的直接呼叫。(#22529)

45740 在 flutter build ios-framework 期間不刪除輸出目錄

45560 在 iOS 上始終使用 isysroot 進行編譯,指向 SDK 根目錄

45436 在 iOS 上始終使用 -isysroot 標誌進行編譯,指向 SDK 根目錄

45189 移除 chmod 以使 Flutter 框架標頭檔案不可寫

45136 移除 FLUTTER_DEVICELAB_XCODE_PROVISIONING_CONFIG 程式碼路徑

44633 為整合測試和新增到 App 模板啟用 bitcode

44625 在長時間執行的 build ios framework 期間釋放啟動鎖

44324 在外掛模板 podspec 中新增 swift_versions,包含預設的 CocoaPod 版本

43915 觀察 iOS 13 上的 VM 服務日誌記錄

43553 將環境變數傳遞給 xcodebuild

42872 從使用庫的 Podfiles 中移除 use_modular_headers

42808 在 platform_view_ios__start_up 測試中,在 pod install 之前執行 flutter pub get

42254 將最低版本更新到 Xcode 10.2

42204 在預設 Podfile 中新增 use_modular_headers!

42029 始終從 Xcode 配置嵌入 iOS Flutter.framework 構建模式版本

41882 將模板 Swift 版本從 4 提高到 5

41491 如果版本 >= 1.8.0,則跳過 pod 初始化。

40792 將構建資訊檢查從生成檔案移至 Xcode 構建

40611 當 iOS 上的構建號和版本無法解析時發出警告

40401 使 FlutterPluginRegistrant 成為靜態框架,以便新增到 App 可以使用靜態框架外掛

40174 保持 Flutter.framework 二進位制檔案可寫,以便可以進行程式碼簽名

40117 在提示文字中顯示過期的 CocoaPods 版本

39539 保持 Flutter.framework 二進位制檔案可寫,以便可以進行程式碼簽名

39509 跳過失敗的 add2app 測試以解除阻塞滾動

38992 在 flutter clean 期間清理 Xcode 工作區

38905 在 Profile 和 Release 模式下,從 SUPPORTED_PLATFORMS 中移除 iphonesimulator

11357 重新命名第一個幀方法並通知 FlutterActivity 已完全繪製 (#38714 #36796)。

11844 透過刪除不必要的方法更新了 scenario app 中的 API 用法。

11902 移除未使用的 FragmentActivity 匯入語句以促進 proguard。

12305 引入 flutterfragmentactivity

12328 向 FlutterActivity 和 FlutterFragmentActivity 添加了 javadoc 註釋。

12359 將 Flutter View 轉發到平臺檢視,並在需要時分離。

12362 修復了內部報告的競態條件。

12806 將初始化移至 FlutterEngine

12987 添加了 FlutterActivity 和 FlutterFragment 的 hook 以 cleanUpFlutterEngine(),作為 configureFlutterEngine() 的對稱操作。(#41943)

13214 在 FlutterFragmentActivity 中將 Activity 結果轉發到 FlutterFragment。

13215 為新的 Android 嵌入器添加了暗模式支援(之前不小心遺漏了)。

13402 將 ActivityAware 和 ServiceAware 的生命週期轉換為不透明物件 (#43670)

13660 修復了啟動螢幕查詢。(#44131)

13698 修復了外掛註冊器的反射路徑。(#44161)

13738 刪除了新嵌入器的危險實驗性警告。(#44314)

13739 將舊外掛註冊訪問器指向新的嵌入器外掛訪問器。(#44225)

13743 從外掛繫結公開資源查詢。(#42019)

13855 在 FlutterShellArgs 中添加了對 --dart-flags 的支援。(#44855)

13932 從所有清單元資料查詢中移除了 GET_ACTIVITIES 標誌。(#38891)

2087 [android_alarm_manager] 更新並遷移 iOS 示例專案

2088 [android_intent] 更新並遷移 iOS 示例專案

2089 [battery] 更新並遷移 iOS 示例專案

2090 [camera] 更新並遷移 iOS 示例專案

2091 [connectivity] 更新並遷移 iOS 示例專案

2092 [device_info] 更新並遷移 iOS 示例專案

2093 [google_maps_flutter] 更新並遷移 iOS 示例專案

2094 [google_sign_in] 更新並遷移 iOS 示例專案

2095 [image_picker] 更新並遷移 iOS 示例專案

2096 [in_app_purchase] 更新並遷移 iOS 示例專案

2097 [local_auth] 更新並遷移 iOS 示例專案

2098 [package_info] 更新並遷移 iOS 示例專案

2099 [path_provider] 更新並遷移 iOS 示例專案

2100 [quick_actions] 更新並遷移 iOS 示例專案

2101 [sensors] 更新並遷移 iOS 示例專案

2102 [share] 更新並遷移 iOS 示例專案

2103 [shared_preferences] 更新並遷移 iOS 示例專案

2109 [url_launcher] 更新並遷移 iOS 示例專案

2110 [video_player] 更新並遷移 iOS 示例專案

2115 [camera] 為 iOS 定義 clang 模組

2125 [in_app_purchase] 為 iOS 定義 clang 模組

2128 [image_picker] 為 iOS 定義 clang 模組

2135 [android_alarm_manager] 為 iOS 定義 clang 模組

2137 [connectivity] 為 iOS 定義 clang 模組

2138 [device_info] 為 iOS 定義 clang 模組

2144 [android_intent] 為 iOS 定義 clang 模組

2145 [instrumentation_adapter] 為 iOS 定義 clang 模組

2146 [local_auth] 為 iOS 定義 clang 模組

2147 [path_provider] 為 iOS 定義 clang 模組

2148 [package_info] 為 iOS 定義 clang 模組

2149 [quick_actions] 為 iOS 定義 clang 模組

2175 [sensors] 為 iOS 定義 clang 模組

2176 [shared_preferences] 為 iOS 定義 clang 模組

2177 [url_launcher] 為 iOS 定義 clang 模組

2179 [battery] 為 iOS 定義 clang 模組

2180 [share] 為 iOS 定義 clang 模組

2182 [google_maps_flutter] 為 iOS 定義 clang 模組,修復分析器警告

2183 [video_player] 為 iOS 定義 clang 模組

2184 [google_sign_in] 為 iOS 定義 clang 模組

2185 [webview_flutter] 為 iOS 定義 clang 模組

2186 在 CI 測試中,當軟體包更改時,對 iOS 和 macOS 程式碼執行 clang 分析器

40302 為 FlutterPluginRegistrant 設定 DEFINES_MODULE 以生成 modulemap

2206 [flutter_plugin_android_lifecycle] 更新 README,包含新外掛名稱

2207 [flutter_plugin_android_lifecycle] 將 e2e 依賴項升級到 0.2.1

2223 [flutter_plugin_android_lifecycle] 在示例應用中註冊 e2e 外掛

2243 [flutter_plugin_android_lifecycle] 將 FlutterLifecycleAdapter 適配到新的嵌入器 API

44043 新增 Android 嵌入器版本分析

2120 [image_picker] 修復了從 'flutter build aar' 構建的 aar 時的崩潰

2168 在嵌入器中為 Android 生命週期新增外掛

2174 [url_launcher] 在 Android Gradle 屬性中啟用 androidx 和 jetifier

11239 從 FlutterActivity 中移除 dart entrypoint Intent 引數。(#38713)

12469 開始斷言 FlutterEngine 正在執行,然後才透過通道進行通訊。

13403 在 FlutterNativeView 中使用 DartExecutor.getBinaryMessenger 而不是已棄用的 send 方法

Material

#

Material 仍然是 Flutter 團隊的重點。在此版本中,我們透過黑暗模式支援重新整理了所有 Material 控制元件。此外,我們還添加了支援將 Scaffold 的 body 高度擴充套件到 app bar 後面的功能,這是由社群成員貢獻的!

36998 在 DropdownButtonFormField 中添加了與 DropdownButton 匹配的屬性

37962 顯示搜尋應用欄主題

38583 添加了 InheritedTheme

38650 允許獨立主題化 Persistent 和 Modal bottom sheets

38709 [Material] 向 SwitchListTile 新增 contentPadding 屬性

38726 使停用的按鈕/晶片/文字欄位不可聚焦。

38813 新增 ToggleButtons.textStyle 屬性

38831 [Material] 向 bottom sheet 和 theme 新增 clip 屬性

38898 ToggleButtons 測試改進

39144 將 textAlignVertical 引數新增到 TextFormField

39156 添加了 Scaffold.extendBodyBehindAppBar

39299 新增 showAboutDialog 示例

39333 允許獨立主題化 Persistent 和 Modal bottom sheets 的背景顏色

39433 向 InputDecoration 和 InputDecorationTheme 新增 helperMaxLines

39572 防止建立 Divider borderSide 時出現異常

39583 修復了單操作橫幅以確保按鈕對齊

39627 ButtonThemeData 中的預設 colorScheme 資料(修復 #38655)

39632 更新了 debugFillProperties 以測試 slider.dart 和 slider_test.dart 中的所有屬性

39903 修復了將 autofocus 傳遞給 MaterialButton,以及在重建 Focus widget 時。

39924 向 DartDoc 片段生成器添加了 DartPad 選項。

40390 文字欄位的 a11y 改進

40608 添加了配置晶片檢查標記顏色的選項

40641 向 Buttons 新增 onLongPress

40665 修復了 CupertinoTextField 和 TextField ToolbarOptions 不更改的問題

40713 Material textselection 上下文選單無法停用全選

40994 修復了 ThemeData.copyWith toggleButtonsTheme 引數型別

41120 下拉選單佈局尊重選單項的固有尺寸

41150 當 userGestureInProgress 的值改變時,重建 modal routes

41172 修復了一些不良的縮排

41320 [Material] 從 TextFields 中移除文字波紋效果

41338 修復了 ReorderableListView 的子項鍵使用 (#41334)

41463 [Chip] 確保對於帶背景顏色的晶片,InkResponse 在刪除時位於前景

41625 更新 DefaultTabController 以允許零個標籤

41629 [Material] 修復 Tooltip 以尊重環境 Directionality

41632 修復 MaterialBannerTheme 方法中令人困惑的 'popupTheme' 變數名

41640 一些格式更改

41650 DropdownButton.style API 文件示例,用於不同的按鈕和選單項文字樣式

41864 更新 BottomAppBar 以在黑暗主題中使用 elevation overlays

41972 向 MaterialButton、RawMaterialButton 和 IconButton 新增 enableFeedback 引數

42033 重申:下拉選單佈局尊重選單項的固有尺寸

42189 修復了 ModalBottomSheets 未響應主題更改的迴歸

42366 TextStyle.fontFamily 應覆蓋 ThemeData 中的 fontFamily 引數

42404 向 showModalBottomSheet 新增 isDismissible 配置

42482 僅當方向更改時才關閉下拉選單,而不是大小。

42554 在重新建立焦點節點時修復路由焦點和自動聚焦。

42613 修復 Tooltip 對 PopupMenuButton 的實現

42683 透過快取後代和祖先來最佳化焦點操作。

42779 修復晶片波紋錯誤 - 不再有兩個波紋

42811 向 DropdownButton 添加了一個 Focus 節點,併為其添加了一個啟用動作。

42936 支援帶有巨型標題的 AppBars

43213 為開關、複選框和單選按鈕添加了快捷鍵和操作。

43422 修復了 AboutListTile 在未設定圖示時顯示空圖標占位符的問題

43511 改進 DropdownButton 宣告訊息

43526 將 PopupMenuButton.icon 型別更改為 Widget

43722 開啟下拉選單時使選中的項獲得焦點

43843 移除 print 並修復程式碼格式

43848 不允許停用的 InkWells 獲得焦點

43859 新增 primaryFocus 的便捷訪問器

43946 向 ExpansionTile 新增 subtitle

43981 修復 app_bar.dart 中的拼寫錯誤

44029 使用字母基線佈局 InputDecorator

44068 修復 tabs.dart 中的拼寫錯誤

44076 註釋中的拼寫錯誤

44160 將 selectedItemBuilder 透過 DropdownButtonFormField 傳遞

44296 ModalBarrier 和 Drawer 屏障阻止滑鼠事件

44736 檢查 material localizations 中的新 diff

44787 修復程式碼片段以在輸出示例中包含元素 ID。

44867 FocusableActionDetector widget

45081 從文字欄位測試中移除重複的 expect

45362 新增 Widget of the Week 影片嵌入

文字和無障礙

#

在文字和無障礙方面,我們對 ButtonBar 和 AlertDialog 進行了一些增強,以防止文字溢位。

40468 將文字欄位字元限制傳播到 semantics

41730 允許自定義 semantics debugger 的標籤樣式

42344 向 snackbar 新增 onVisible 回撥。

42368 更新 Android semantics 測試以匹配現有的引擎行為。

43193 ButtonBar 在水平溢位時在列中對齊

43226 實現 AlertDialog 標題/內容溢位滾動

38573 限制 scrollOffset 以防止文字欄位抖動

41108 修復文字欄位更改時發生的文字編輯 bug。

44605 更改 RenderEditable.textAlign 不再會導致熱過載失效

動畫和滾動

#

在動畫方面,我們釋出了 TweenAnimationBuilder,用於構建自定義隱式動畫。有關更多資訊,請檢視此 TweenAnimationBuilder 影片

38317 TweenAnimationBuilder 用於在不管理 AnimationController 的情況下構建自定義動畫

38979 向隱式動畫控制元件新增 onEnd 回撥

43756 將未動畫新增的路由標記為不透明

39142 修復 sliverfixedextent 與 sliverchildbuilderdelegate 的錯誤…

44965 滾動 scrollable 以使焦點控制元件可見。

Web

#

我們將 Web 支援從開發版頻道移至 Beta 版頻道。有關更多詳細資訊,請檢視 Web 支援部落格文章

37819 新增 HtmlElementView(Flutter Web 平臺檢視)

38723 處理 Web 應用程式的編譯失敗

38823 連線到 Web 應用程式時列印服務 URL

39006 將 Web 工作流新增到預設驗證器

39066 瀏覽器斷開連線時終止 resident runner。

39073 為 Flutter Web 應用程式新增 profile 模式

39189 修復 Flutter Web 的源對映載入和除錯協議

39344 上游文字編輯在 Flutter Web 中所需更改

39364 更正庫路徑併為 dart 平臺移除 dart:io 和 dart:isolate

39414 確保 profile 在 build web 命令中被轉發

39462 移除 shell 中的 run 併為 chrome 啟動新增單元測試

39543 如果 .dart_tool 缺失,則建立它

39628 為 Web 外掛自動生成註冊器

39748 列印正在啟動的訊息

39751 小清理和防止多次退出

39752 為 Web 新增重新編譯請求的延遲

39756 從 create 中移除 web 標誌

39774 解決 Web SDK 源對映包損壞的臨時方法

39910 如果沒有 Web 外掛,則不生成外掛註冊器

39950 註冊 reload sources 呼叫,並使 'r' 成為 Web 的重啟快捷鍵

39951 新增 "web" 伺服器裝置,以允許在任意瀏覽器上執行 Flutter for Web

39983 更新 Flutter for Web 的支援庫集

39999 為 Web 停用效能覆蓋

40175 確保我們為 Flutter Web 傳送熱過載事件

40191 為 Web 裝置新增 run 配置的主機和埠

40301 允許跳過 Flutter for Web 中的 webOnlyInitializePlatform

40370 將 port 重新命名為 web-port,將 hostname 重新命名為 web-hostname

40465 將 --web-hostname 和 --web-port 傳遞給 release 模式除錯選項

40627 允許使用 --no-web-browser-launch 跳過 chrome 啟動

40757 當 Chrome 不可用時,修復 Web 伺服器裝置的可見性

41222 將歸檔的 js 部分檔案從 dart_tool 目錄中複製出來

41347 修復 Web resident runner 初始化中的計時問題

41386 服務 web 下的所有 html 檔案

41397 Web 鍵盤對映

41441 編譯失敗時退出 Web resident runner

41545 為 Flutter Web 新增編譯和重新整理時間的分析跟蹤

41618 將 Server/web 重新命名為 Headless Server/headless-server

41695 向找不到 Chrome 的訊息新增更多資訊

41815 [web] 明確表示小寫 "r" 也可以執行熱重啟

41906 確保在 build_web 中生成外掛註冊器

41996 [web] 始終傳送路由名稱,即使它為 null

42144 當為 Web 應用程式提供 --start-paused 時,不要急於呼叫 runMain

42260 Web 程式碼的小清理

42289 確保 precache 在 dev 分支上工作

42531 啟動 Web 伺服器時列印正確的 hostname

42676 [web] 更新 Web runner 訊息,顯示 flutter.dev/web

42701 從除錯伺服器提供正確的內容型別

42857 為 Web 的 release/profile 構建修復進度指示器。

42951 為 Web 實現 debugTogglePlatform

42970 將 headless server 重新命名為 web server

43214 對於 Web 上的 --profile 構建,仍使用 -O4,但程式碼未壓縮。

43573 捕獲 Web 工具中的 MissingPortFile。

43576 啟用 Web 的實驗性增量編譯器

44028 支援 Web 上的 --no-resident

44263 允許 Web 伺服器裝置在以 --start-paused 啟動時使用擴充套件

44268 從使用 app.progress 切換到 app.webLaunchUrl 以傳遞 Web 啟動 URL

44421 將 Web 測試切換到 macOS

44744 確保 Web 伺服器不強制使用 dwds

44746 移除 chrome 裝置 Web 整合測試

44830 更新 manual_tests 以便能在 macOS/Web 上執行

45145 快取 Web 裝置所需的 sdkNameAndVersion 邏輯

45286 修復 Windows 上的實驗性增量 Web 編譯器

11360 構建舊版 Web SDK

11421 將 Flutter Web 引擎同步到最新

11732 最後一次 Flutter Web 同步:cc38319841

11796 為外掛處理程式提供一個鉤子,用於在 Web 上接收訊息

12161 確保 Web 影像 ImageShader 實現 Shader 介面

12335 [Web] 實現暗模式支援 Web

12445 [web] 過濾測試目標;快取 host.dart 編譯

12712 支援 Web 的正確鍵盤對映

12747 為 channel_buffers.dart 新增 Web 實現

12753 [web] 不要求 felt 在 PATH 中

12794 [web] 支援路徑轉換

12811 [web] 實現基本的徑向漸變(TileMode.clamp,無變換)

13003 [web] 路由替換時更新 URL

13066 [web] 新增基本的每頂點顏色 drawVertices API 支援

13141 啟用/調整 Web SDK 源對映

13161 啟用/調整 Web SDK 源對映,第二版

13187 [web] 環境變數以停用 felt 快照

13190 [web] 修復畫布重用指標。重構 drawVertices 程式碼。

13259 [web] 在 felt 構建 watch 模式下支援 -j 使用 goma

13268 [web] 支援輸入操作

13272 [web] [test] 新增 Firefox 安裝功能到測試平臺

13296 [web] Cupertino 動態顏色修復。

13359 Web:修復 Color 子類處理

13462 [web] 從 visualviewport 獲取大小,而不是 window.innerHeight/innerW…

13483 web: 修復 Paragraph.getBoxesForRange 的零長度範圍

13634 [web] 在 felt 構建 watch 模式下忽略對 *.ttf 檔案的更改

13699 [web] 不要將鍵盤事件從文字欄位傳送到 Flutter

13722 [web] 正確支援文字欄位的 obscureText

13741 [web] 重構文字編輯以優雅地處理任何順序的平臺訊息

13748 [web] 支援 gif/webp 動畫,加快 BitmapCanvas 中的影像繪製速度。

13769 [web] 實現 TextStyle.shadows

13779 [web] 修復 drrect 的路徑到 svg

13802 [web] 修復可選擇文字渲染

13809 [web] 修復影像的混合模式

13860 [web] 將畫布的兄弟變換改為 3d,z=0,以繞過畫布渲染錯誤。

13901 [web] 修復單行點陣圖畫布文字陰影

13909 [web] 實現 PathMetrics.length

13922 [web] Flutter for Web 自動更正支援

13929 [web] 允許使用者啟用畫布文字測量

13940 [web] 修復 dom_renderer 重置的邊緣檢測

13960 [web] 修復 Firefox 的預設行高問題

13981 [web] 在文字佈局中使用 Element.nodes 而不是 Element.children

2119 新增 Web URL launcher

桌面端

#

我們還正在將 macOS 支援從技術預覽版移至 Alpha 版,並在開發版頻道中啟用它。

37901 [macos] 在建立邏輯鍵之前檢查特殊鍵

38748 為 macOS 建立結構正確的框架

38858 在 Windows 和 Linux 上使用 GLFW-name artifacts

38909 新增對 macOS release/profile 模式的支援(3/3)

39017 新增 "OneSequenceRecognizer.resolvePointer"。修復多個指標上的 DragGestureRecognizer 崩潰

39264 為 macOS 新增 profile 支援

39432 在 Windows 的 zip 檔案中不隱藏 .git

39702 修復 macOS App.framework 版本符號連結

39836 切換到 Win32 Windows 嵌入器

40011 [windows] 搜尋預釋出版和“所有”Visual Studio 安裝

40186 為預設焦點遍歷新增快捷鍵和操作

40194 為 Windows 專案新增臨時目錄

40197 [windows] 重構以最佳化 vswhere 查詢

40294 修復 copy 命令併為 macOS assemble 移除 resolve sync

40375 加固 macOS 構建對 Xcode 專案 getInfo 的使用

40393 將構建模式轉換為小寫,用於 tool_backend

40587 為 Linux 新增臨時目錄

40730 在外掛更改時使 macOS pods 失效

40851 支援 macOS(應用程式和外掛)的建立

41015 為 Windows 和 Linux 新增外掛支援的初步工作

41332 防止 PointerEnter[or Exit]Event 擦除 event.down 值

41551 在命令列上傳遞 Linux 構建模式

41612 Linux Desktop 的 AOT 支援 I:將 Linux 構建切換為 assemble

41747 在 macOS Podfile 中新增 Profile 條目

42031 重寫 MouseTracker 的跟蹤和通知演算法

42235 為 RawKeyEventDataAndroid 事件讀取 deviceId

42487 重構 depfile 用法並更新 Linux 規則

42861 將 repeatCount 新增到 RawKeyEventDataAndroid

42962 移除 linux-x64 unpack 邏輯

43238 修復當節點選項為空時的焦點遍歷

43362 允許重新構建 Docker 映象,重新啟用 deploy gallery macos

43758 按平臺拆分桌面配置回退變數

44130 為 macOS 文字編輯新增命令鍵繫結並修復選擇。

44410 新增 macOS fn 鍵支援。

44576 [ci] 為 macOS 使用最新的 Cirrus 映象

44620 提高 tool_tests-general-linux 的記憶體要求

44844 正確解釋 GLFW 鍵事件上的修飾鍵

45264 新增 macOS 熱過載測試

45392 [ci] 為 Windows 任務提供更多資源

8507 為 macOS shell 新增紋理支援。

11324 清理 Windows 和 Linux 的構建輸出

11327 [Windows] 更新 API 以實現替代的 Windows shell 平臺實現

11380 在 macOS FlutterDartProject 中使用 App.framework

11386 允許 GLFW 嵌入使用不可調整大小的視窗

11475 buildfix: 支援構建 Windows release/profile 模式(#32746)

11828 [Windows] 透過新增非同步資源上傳的上下文來解決 #36422

12230 新增 FlutterAppDelegate 的初始 macOS 版本

12234 [glfw/windows] 停止跟蹤輸入模型

12267 [macos] 停止跟蹤文字輸入模型

12276 為 Windows 新增系統字型更改監聽器

12423 新增 Windows 嵌入測試

12809 僅在 Linux 上使用 x64 主機工具鏈進行 x86 target gen_snapshot

12814 在 Windows 上啟用所有引擎測試

13300 將 macOS 桌面嵌入器切換到使用平臺和渲染任務執行程式相同的執行緒配置。

13702 修復 macOS 上的編輯選擇和刪除

框架

#

在此版本中,我們修復了許多錯誤,以提高我們框架的質量和穩定性。

38643 PlatformViewLink 處理焦點

38699 修復 widgetspan 在文字小部件中與省略號不工作

38789 修復 DragTarget 在被拒絕的 Draggable 進入時未被重建 #38786

38930 實現系統字體系統通道監聽器

38936 修復 KeySet(和 LogicalKeySet)的 hashCode 計算

39059 解釋 MediaQuery 測試檔案中的 const 值

39085 使檢查器詳細資訊子樹深度可配置。

39089 糾正 InheritedTheme.captureAll() 對於相同型別的多個主題祖先

39195 尊重反向滾動檢視

39252 為 CustomMultiChildLayout 新增 relayout 選項。

43282 在 TextPainter 中公開文字指標。

39354 新增 IterableFlagsProperty 並將其用於代理框類

39428 替換文件示例文字

39446 將 viewType 新增到 PlatformViewLink

39844 修復彈出英雄的曲線

40099 修復 double.infinity 序列化

40105 確保在根小部件附加時排程幀

40119 修復 skips 以包含所有頻道

40280 PlatformView:如果控制器更改,則重新建立表面

40306 在英雄彈出後以及 from hero 為 null 時恢復 offstage 和 ticker 模式

40609 為 strut FlagProperty 指定 ifTrue 和 ifFalse

40635 從 getSpanForPosition 返回 WidgetSpans

40638 允許外掛將平臺訊息傳送到框架並實現 EventChannel

40709 可選文字對齊已損壞

40718 在許可證解析器中處理 CR+LF 換行符序列

40775 使用 EdgeInsetsGeometry 而不是 EdgeInsets

40917 AnimatedBuilder API 文件改進

41145 顯式設定 CocoaPods 版本

41245 更改 ActionDispatcher 的查詢方式。

41329 重構:基礎點選手勢識別器

41417 處理先前的評論,修復 Intent.doNothing。

41763 MediaQuery 更新時不再重新構建 Routes

41791 重構:使用一些實用函式使 MouseTracker 測試簡潔

41803 修復了 media query 問題並添加了測試以防止其再次出現

41879 使 MouseTracker.sendMouseNotifications 私有

42076 在 attach 時建立手勢識別器,在 detach 時處置以避免洩漏

42253 將模態障礙物更改為在點擊向上時關閉

42484 漸變變換

42526 提高路由器效能

42558 使用佔位符尺寸來反映最終文字佈局

42688 原始碼註釋拼寫錯誤修復

42777 修復 TransitionRoute 中的記憶體洩漏

42879 重新實現硬體鍵盤文字選擇。

42953 軟化圖層損壞

43006 在 ClipRRect 中將預設 borderRadius 設定為零(如文件所述)

43246 Tap.dart:修復了 reason 右側的間距

43296 跳過失敗的測試以獲得綠色構建

43467 修復了可能意外呼叫回撥兩次的錯誤。

43677 新增 libzip 快取偽影

43684 [flutter_runner] 使用 topaz 樹中的 sky_engine

43685 從 flutter_tools 中移除 Poller 類

43739 啟用 avoid_web_libraries_in_flutter

43865 將 show 和 setEditingState 呼叫重新排序到 IMM

44150 手動回滾引擎以恢復樹

44217 將指標事件清理移至引擎。

44233 從 inherited model 中移除 yield

44408 移除不再需要的清理程式碼

44422 移除 TextRange,將其從 dart:ui 匯出

44490 修復 "node._relayoutBoundary == _relayoutBoundary" 崩潰

44611 將 TextPosition 轉換為 getWordBoundary

44617 使帶 pixels=null 的 ScrollPosition 處置合法

44622 跟蹤並使用回退 TextAffinity 來處理 null affinity 平臺 TextSelections。

44967 嘗試使用更優雅的 FlutterError,並在 release 模式下使其不那麼激進

45083 修復可拖動的可滾動表格滾動通知

45240 implicit-casts:false 在 flutter_web_plugins 中

45249 implicit-casts:false 在 flutter_goldens 和 flutter_goldens_client 中

引擎

#

在此更新中,核心引擎繼續獲得許多改進,包括一項解決了 iPhoneX/Xs 上長期要求的滾動效能問題的修復。

9386 [glfw] 將 glfw 鍵資料傳送到框架。

9498 當應用程式進入後臺時通知框架清除輸入連線 (#35054)。

9806 在 ios_external_texture_gl 中重用紋理快取。

9864 新增將 AppDelegate 新增為 UNUserNotificationCenterDelegate 的功能

9888 提供 dart vm 的初始 isolate 回撥,以便子 isolates 屬於父 isolates 組。

10154 開始利用 Skia 的新 copyTableData 來避免多餘的複製。

10182 透過允許初始化並行化,使 flutter 啟動更快

10326 copypixelbuffer 導致崩潰

10670 在 dart:ui 中公開 LineMetrics

10945 為每個許可證對 FILE 輸出進行去重

11041 向 FrameTiming 新增 BroadcastStream

11049 在 FlutterViewController 釋放時釋放 _ongoingTouches

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

11063 更新 ExternalViewEmbedder 類註釋。

11070 Metal 的 Platform View 實現

11210 將 Chrome 新增到 Dockerfile

11222 不要重複呈現會話

11224 在重新佈局時更新 metal layer 的可繪製大小。

11226 讓 firebase testlab 始終透過

11228 重新啟用 firebase 測試且不使用 google 登入

11230 將 tflite_native 和 language_model 的修訂版本更新為與 Dart SDK 匹配

11256 將編譯器升級到 Clang 10。

11265 使停用除錯符號剝離成為可能

11270 停止服務時將 NSNetService 委託重置為 nil。

11283 修復等於 null 的物件未被檢測為 null 的問題

11300 如果存在 view_embedder,則不準備 raster_cache

11305 修復 EmbedderTest.CanSpecifyCustomTaskRunner 中的段錯誤

11306 將 FlutterMacOS 的 podspec 最低版本設定為 10.11

11309 修復 change_install_name.py 以相容 GN

11310 當使用自定義合成器時,請確保根畫布已被重新整理。

11315 不新增 null 任務觀察者

11330 從輸出偽影中移除引擎雜湊

11355 更新 sim 指令碼

11356 從 pom 檔名中移除引擎雜湊

11361 在方法通道呼叫中包含 Java 堆疊跟蹤

11367 使訊息迴圈任務條目容器執行緒安全

11368 為 GLFW 切換到增量執行迴圈

11374 更新 scenario readme

11382 微小:移除 pom 檔案中的空行

11384 考慮外部檢視嵌入器管理的表面的根表面變換。

11388 允許覆蓋 GLFW 畫素比

11392 在測試合成器中連線軟體渲染。

11394 在使用軟體渲染器進行自定義合成時避免獲取根表面。

11395 移除已棄用的 ThreadTest::GetThreadTaskRunner 並使用新的 CreateNewThread API。

11416 縮小 cirrus docker 映象:減少 RUN 計數,清理 apt-get

11419 為 PerformanceOverlay 支援非 60Hz 重新整理率

11420 修復 Chromebook 上的觸控板滾動

11423 新增管道中飛行幀數的跟蹤。

11427 跳過空的平臺檢視覆蓋

11436 更新 skia 的方法

11456 更新 ui.LineMetrics.height 指標,使其對外部使用者更有用

11473 在 EOF 處新增缺失的換行符

11489 在 C++ 原始檔中確保 EOF 前有尾隨換行符

11520 Bitcode 僅用於 release

11524 在 ios_external_texture_gl 中重用紋理快取

11528 從 gen_snapshot 中剝離 bitcode

11537 新增檢查以啟用 metal 進行匯入

11550 使 Skia 快取大小通道響應一個值

11554 使 engine、ui 和 sdk rewriter 成為 dill 構建的輸入

11576 對 Doxygen 主題進行少量調整。

11622 從 font_asset_provider 中包含

11635 [flutter_runner] 移植 ViewBound Wireframe 功能

11636 [fidl][flutter_runner] 移植到新的 fit::optional 相容 API

11638 更新 CanvasSpy::onDrawEdgeAAQuad 以適應 Skia API 更改

11649 [flutter] 移植:在 microtask 佇列上執行 handle wait completers

11654 在所有翻譯單元的 EOF 處附加換行符。

11655 在 Safari 上載入格式不正確的字型時不會崩潰

11669 新增樣式指南和格式化資訊

11717 為 Skia 通道返回 JSON 值

11722 在設定 font-family 屬性時,始終引用字體系列名稱。

11736 將 wasm 新增到 sky_engine

11776 [flutter_runner] 將所有更改移植到 dart_runner cmx 檔案

11783 完全剝離 bitcode

11795 為字型指標新增一個好的參考來源。

11804 結合 View.setSystemGestureExclusionRects 的程式碼審查反饋來自 #11441

11808 標註 FlutterEngine 的可空性,使 Swift 編寫更符合人體工程學

11835 [CFE/VM] 修復 bump 到 kernel version 29 的 merge/typo

11839 從 Scenarios 測試應用程式中移除 ENABLE_BITCODE

11842 透過傳遞完整的 justify 跟蹤變數來修復使用換行符的 RTL giust

11847 為 flutter runner 新增示例單元測試目標

11849 使用自動生成清單支援構建獨立的 far 包

11875 [flutter_runner] 將公共庫新增到 test far

11877 完成方法通道上的訊息響應的連線

11880 處理新的導航平臺訊息

11893 新增 @Keep 註解

11899 改進輸入法和 Unicode 字元顯示(#30661)

12011 為 1.9.1 的 cherry-picks

12016 [flutter_runner] Kernel 平臺檔案現在可以在 topaz 中構建

12023 修復多 Span 文字標尺快取查詢失敗。

12026 [flutter_runner] 將 Flutter 元件引數傳遞給 Dart 入口點

12034 [flutter_runner] 重構我們的構建規則,使其更符合 topaz

12048 [flutter_runner] 為 Dart VM 剖析器生成符號

12054 [flutter_runner] 從 Topaz 移植可訪問性橋

12076 向 flutter_window_controller 新增一個銷燬當前視窗的方法。

12080 不要引用通用字體系列

12081 新增 GradientRadial paintStyle 實現

12087 在每次嵌入器單元測試呼叫時,預設不啟動 observatory。

12204 在 engine 的 release 模式下不停用 dart:ui 類的 toString

12205 預設不載入 Roboto

12218 將修補的 SDK 名稱名稱空間化,以避免與 Topaz 衝突

12222 不要在 topaz 樹上生成 kernel 平臺檔案

12226 [web_ui] 為 MethodCalls 到 flutter/platform_view 新增缺失的 dispose handler

12227 [web_ui] PersistedPlatformView 屬性更新處理,以實現大小調整

12228 固定並自動安裝 chrome 版本

12229 改進 RecordingCanvas 上內部落入外部 DRRect 的渲染(或不渲染)的檢查

12249 可編輯文字修復

12253 實現 Base32Decode

12256 在訓練期間不假定 Platform.script 是 Dart 原始檔。

12257 重新啟用 ThreadChecker 並修復相關的失敗

12258 重構和最佳化 'felt' 工具

12269 a11y:公開文字欄位的最大字元數

12273 清理 AppLifecycleTests

12274 將螢幕截圖測試輸出儲存為 Cirrus 偽影;對不匹配的螢幕截影像素進行模糊比較

12275 隨機測試順序並重複測試執行一次。

12281 可選地跳過構建

12282 [flutter_runner] 更改偽影的路徑

12287 將 PluginRegistry 新增到 C++ 客戶端包裝器 API

12288 在引用字體系列時包含 firefox

12289 修復 flutter runner 路徑

12303 向 felt 新增構建命令

12306 修復 setSystemGestureExclusionRects 的宣告以匹配 PlatformMessageHandler 介面

12307 清理 web_ui

12308 [flutter] 移除舊的 A11y API。

12318 更新 canvaskit 後端

12319 向 getDisplayRefreshRate 協議新增 "type"

12320 修復 GLFW 事件迴圈中的連續事件輪詢

12323 felt 工具的 README

12330 確保即使沒有角的 DRRect 也會繪製。

12336 檢查 RTL 處理中尾隨空格執行的索引邊界。

12340 [flutter_runner] 暫時不要使用預構建

12342 更新測試以驗證二次 isolate 在主 isolate 退出之前已關閉。

12343 [flutter_runner] 從 CC 源中移除共享快照的使用

12345 [flutter_runner] 移植 Topaz 的調優建議以獲取 vulkan surface provider

12346 [flutter_runner] 從 runner context 移至 component context

12347 [flutter_runner][async] 將 dart/flutter 遷移到新的 async-loop API

12348 [flutter_runner] 從 topaz 移植新的編譯跟蹤

12349 [flutter_runner] 顯式將 |trace_skia| 設定為 false

12350 [flutter_runner] 移植 vulkan surface 更改

12355 跳過易 flakiness 的測試

12363 跟蹤 "mouse leave" 事件

12375 同步 dart_runner

12395 將 --dart-vm-flags 白名單更新為包含 --write-service-info 和 --sample-buffer-duration

12403 在框架尚未準備好之前,不要傳送指標事件

12410 為具有輸入焦點的檢視傳送 TYPE_VIEW_FOCUSED。

12412 SkSL 預編譯

12426 將回退字型名稱儲存為 vector 而不是 set。

12431 在 recording_canvas.dart 中解釋負半徑為 0

12432 解決三星鍵盤問題

12434 刪除 golden 檔案;切換到 flutter/goldens

12435 向用於分析的 Dart SDK 副本新增 dart:html, dart:js, 和 dart:js_util

12443 強制 felt 工具在 sigint、sigterm 時退出

12446 新增對 JIT release 模式的支援

12447 為 Firefox 的文字編輯反映選擇更改

12448 使 kDoNotResizeDimension 公開,以便框架可以直接使用它

12450 新增對 5 個滑鼠按鈕的支援

12453 新增 Link SemanticsFlag

12454 將 .mskp 檔案新增到二進位制格式

12470 [web_ui] 檢查特定裝置的指標是否已按下

12479 重構 text_editing.dart

12563 從 unittests 中移除 blobs 快照格式的使用

12565 移除對 topaz 的引用

12573 [flutter_runner] 將 thread_application 對重構為 ActiveApplication

12618 將 isFocusable 新增到 SemanticsFlag

12681 建立一個可打包的增量編譯器

12695 向 'Texture' 和 'FlutterTexture' 新增 onUnregistered 回撥

12698 [web_ui] 修復文字編輯的無效狀態 bug

12699 在 Scenario 應用中新增 'pub get' 到 'compile_xxxx.sh'

12700 為嵌入器新增缺失的標誌。

12701 清理:建立了一個宏來斷言 ARC 已啟用。

12706 檢查輸入法子型別是否為 null

12708 清理:為 FlutterViewController 開啟了 NS_ASSUME_NONNULL_BEGIN。

12710 在 textarea 元素中設定透明背景

12725 將通道緩衝區大小調整擴充套件到方法通道。

12728 從 scenario 應用中移除未使用的匯入

12730 當節點設定了 SCOPES_ROUTE 時,停止設定可訪問性文字。

12733 [flutter_runner] 使 rd 和 rx 統一

12746 當設定輸入焦點時傳送 AccessibilityEvent.TYPE_VIEW_FOCUSED。

12754 透過考慮更新的 SubmitFrame 簽名來修復 Metal 構建。

12775 向程式碼添加了一些執行緒斷言,並使 ios_surface_ 安全,因為

12777 修復 Metal 構建。

12780 重啟所有現代三星鍵盤 IMM

12783 新增單元測試以驗證根表面變換會影響平臺檢視座標。

12785 修復包指令碼中的 bug 並新增 dev_compiler

12793 修復 Firefox 中的選擇問題

12797 新增批次更新截圖的選項;更新截圖(進行中

12798 [flutter_runner] 更新 cmx 檔案以包含 TZ 支援

12799 停用 EmbedderTest.CanLaunchAndShutdownMultipleTimes。

12800 美化所有 CMX 檔案

12801 不要引用字體系列名稱

12802 即使目標平臺是 32 位,也使用 64 位主機工具鏈構建 gen_snapshot

12808 添加了一個嵌入器示例

12813 解鎖 flutter_tester 啟動時的 SIGPROF

12816 啟用 sanitizer 構建變體。

12821 更新 buildroot 以拉取 ubsan 更新。

12931 移除對 package:_chrome 的引用

12958 在 KeyEventChannel 編碼方法中新增 deviceId

12960 修復通道緩衝區除錯輸出中的拼寫錯誤。

12974 支援標準編解碼器中的空字串和向量

12980 目前,_printDebug 僅在 engine 的 debug 構建中發生。

12982 顏色矩陣文件

12986 點選 Tab 時阻止預設行為

12988 除非平臺需要 host_targeting_host,否則使用標準的 gen_snapshot 目標

12989 取消 kDoNotResizeDimension 的公開

12991 編譯 sanitizer 抑制列表並根據需要報告 bug。

12999 開始將我們的 debug 背景任務 ID 設定為無效

13001 缺失的連結標誌

13004 允許嵌入器在啟動時指定任意資料給 isolate。

13005 auto-formatter 對 BUILD.gn 檔案的修復

13008 與 Skia 的 SkShaper/SkParagraph API 整合更多

13009 修復 Link Semantics 拼寫錯誤

13015 觸發 PlatformViewController FlutterView 回撥

13042 新增 "felt clean" 命令

13043 為 Win32 嵌入新增任務執行程式

13044 在移動瀏覽器上支援鍵盤型別

13047 允許嵌入器在啟動時指定任意資料給 isolate。

13049 在 tsan instrumented 構建中忽略 Dart VM 的執行緒洩漏。

13053 將 Cirrus badge 設定為僅顯示 master 分支的狀態。

13056 將 Metal 渲染器選擇置於執行時標誌和 plist 選擇加入之後。

13071 [dart_aot_runner] 新增對生成 dart_aot 快照的支援

13074 [dart_aot_runner] 新增生成 dart_aot 二進位制檔案的規則

13082 java imports/style

13085 當 gen_package 失敗時列印更多輸出

13086 Gen package 輸出已更正

13088 felt: 使用 rest args 指定測試目標

13089 清理 gen_package.py

13090 為 felt 工具快照,以加快啟動速度

13091 移除持久快取 unittest 超時

13094 整合更多 SkParagraph builder 補丁

13096 [dart_aot_runner] 使用 host_toolchain 構建 kernels

13097 更新 felt README

13101 [dart_aot_runner] 生成 vmservice aotsnapshots

13103 [dart_aot_runner] 完成 dart_aot_runner 的移植

13121 更改 IO 執行緒著色器快取策略

13122 重構 chrome_installer

13123 將 ICU 版本升級到 64.2

13124 允許嵌入器指定渲染任務執行程式描述。

13125 將 dart:__interceptors 庫新增到 dart sdk

13126 [frontend_server] 在訓練執行中包含位元組碼生成。

13143 將 flutter_tester 二進位制檔案新增到 CIPD 包

13144 文件 //flutter/runtime/dart_vm

13151 移除不完整的靜態執行緒安全註解。

13153 使 Dart isolate 建構函式私有。

13154 修復 frontend server package_incremental 指令碼的輸出檔案路徑

13157 修復 SkVertices 中的型別錯誤

13159 將基於表面的 SceneBuilder 實現移至 surface/

13162 文件 //flutter/runtime/dart_isolate.h

13175 在 sendKeyEvent 中移除對 updateEditingState 的重複呼叫

13176 將 repeatCount 新增到 FlutterKeyEvent

13177 將編譯器升級到 Clang 10。

13182 如果我們收到一個“按下”事件,則將該裝置新增到活動裝置中。

13185 新增 firefox_installer.dart

13192 在 CanvasKit 後端中使用 window.devicePixelRatio

13193 自定義合成器層必須考慮裝置畫素比。

13196 文件 //flutter/runtime/dart_snapshot.h

13207 包裝文字編輯以修復選擇。

13209 保持 felt 執行的子程序的標準輸出顏色

13212 在自定義合成器回撥周圍新增跟蹤事件。

13218 為嵌入器 API 指定一個人類可讀的錯誤原因。

13232 避免在 UI 執行緒上取消引用 IO 管理器的弱指標

13237 不要在解構函式中嘗試清空 SkiaUnrefQueue

13238 允許嵌入器更新首選語言環境。

13239 在 UIDartState 中持有 Skia unref queue 的引用

13240 將 CanvasKit 更新到 0.7.0 並完善繪製

13241 收集許可證時忽略 *.obj 檔案

13242 將 harfbuzz 更新到 2.6.2,將 buildroot 回滾到 a518e

13255 修復可訪問性橋中的 NPE

13261 更新許可證指令碼以忽略 testdata 目錄

13265 確保我們在 Shell::EngineHasLivePorts() 中呼叫 UI 任務執行程式的 Engine

13269 將 flag 修改事件傳送到框架

13270 新增 recipe changelog

13274 修復 HtmlCodec 中的解碼功能檢測

13275 進一步完善 CanvasKit 後端

13292 停用易 flakiness 的測試 ShellTest_ReportTimingsIsCalled。

13295 避免在 GPU 或 IO 任務執行程式上訪問 Cocoa 檢視。

13311 [recipe] 上傳 opt flutter_tester

13314 保護 Flutter 使用的 EAGLContext

13319 將 FlutterEngineRunsAOTCompiledDartCode 新增到嵌入器 API。

13321 將 LinearTextFlag 傳遞給 SkFont - iOS13 字母間距

13337 將 dart/language_model 升級到 9fJQZ0TrnAGQKrEtuL3-AXbUfPzYxqpN_OBHr9P4hE4C

13342 在傳送之前攔截 SystemSound.play 平臺訊息。

13345 將平臺檢視 ID 暴露給嵌入器可訪問性節點

13360 根據檢視層次結構啟用 RasterCache

13361 進一步完善 CanvasKit 後端

13364 [flutter_runner] 移除 libdart profiler symbols 的檢查

13367 延遲 metal 可繪製物件的獲取直到幀提交。

13391 使用 BitmapCanvas 實現基本的 Picture.toImage

13395 修復 fml_unittes 在 presubmit 期間未執行的問題

13397 [flutter_runner] 不要重複構建 far 檔案

13401 重新格式化 BUILD.gn 檔案以符合格式檢查器的 presubmit 指令碼

13405 確保在 Flow 中直接重置矩陣時,根表面變換能夠保留。

13406 修復 GN 格式檢查器指令碼的 dry run 模式

13407 啟動 luci

13419 [dart_runner] common libs 需要存在才能執行 aot runner

13424 重新新增 isRunningInRobolectricTest

13440 將 Cirrus Dockerfile 作為 CI 使用

13444 從 CIPD 指令碼中移除 yaml 模組的使用

13448 在 fml::VisitFiles 中複製目錄 fd

13451 修復 iOS13 的 mDNS

13460 [dart] 使 intl 服務可用

13461 CIPD 需要目錄是相對路徑

13464 [recipe] 將 sky_engine 上傳到 CIPD

13468 在 FlutterActivityTest 的 FlutterEngine 建構函式中傳遞 automaticallyRegisterPlugins 標誌

13478 使用 check_output 代替 check_call

13479 列印輸出

13630 修復 Enter 鍵在多行欄位中不新增新行的 bug

13642 Issues/39832 reland

13643 確保 CAMetalLayer 的 FBO 附件可以被讀取。

13649 新增 'Cough' 測試字型並支援多種測試字型。

13695 修復 Class.forName 的 unchecked call 警告

13697 將指標事件清理移至引擎。

13708 確保在物理畫素中,裝置畫素比被計入視窗指標。

13710 修復 picture 柵格快取節流

13711 Imagefilter 包裝器物件

13719 修復 splash screen 查詢中的 NPE

13727 向 LineMetrics 新增行邊界資訊。

13728 優先使用 SchedulerBinding.addTimingsCallback

13731 將平臺檢視 mutator 堆疊暴露給自定義合成器。

13735 清理 frontend server 的過時 --strong 選項

13736 libtxt:將 RTL 布林標誌傳遞給 measureText 而不是 bidiFlags 列舉

13742 僅在未指定 --aot 時指定 --no-link-platform,回滾 dart-lang sdk

13744 即使在嵌入器提供的渲染目標被回收時,也要建立一個新的 picture recorder。

13747 將 TextRange 從 framework 移至 dart:ui。

13760 在 CanvasKit 後端實現 Path.computeMetrics

13762 根據檢視層次結構啟用 RasterCache

13765 暫時將 wordBoundary 更改為動態

13768 將 ImageFilter 和 BackdropFilter 新增到 CanvasKit 後端

13772 將 Path 和 PathMetrics 從 canvas.dart 移動到它們自己的檔案中。無變化

13780 允許傳遞熱過載除錯標誌

13781 在 VsyncWaiter 中為 UI 執行緒建立一個 WeakPtrFactory

13782 文件 FlutterPointerEvent 中點的座標空間。

13784 新增 Helvetica 和 sans-serif 作為回退字體系列

13785 修復 Rasterizer::MakeRasterSnapshot 中的 RendererContextSwitch 結果檢查

13786 在繪製陰影時考慮 devicePixelRatio

13795 在 EngineParagraphStyle.toString() 中新增缺失的逗號

13796 在 canvaskit 後端實現徑向漸變

13799 將 flutter engine 分發的 dart/language_model 版本更新為最新

13803 [build] 使 --engine-version 標誌可選

13805 從 ParagraphStyle 中移除額外的陰影

13812 保護 RendererContextSwitch 以進行 flutter 的 gl context 重構。

13829 [dart_runner] 初始化日誌記錄和跟蹤

13832 移除未使用的匯入

13848 使用 Skia 的 matchStyleCSS3 來查詢與字型樣式匹配的捆綁資源型別字型

13850 修復測試以考慮畫素比變換是框架的責任。

13851 為 CanvasKit 實現 ui.Path 的其餘方法

13869 更改測試執行器和平臺使其獨立於瀏覽器

13881 更改 getLineBoundary 的邊緣條件

13902 向 Color 類新增 opacity -> alpha 方法

13903 在 CanvasKit 後端實現基本文字渲染支援

13904 修復 withIn 匹配器距離函式查詢

13907 允許 api_conform_test 忽略 toString、hashCode 和 ==

13908 提供了在後臺應用程式的 IO 執行緒上關閉 OpenGL 操作的方法

13918 為 GPUSurfaceSoftwareDelegate 新增虛擬解構函式。

13926 將 dev_compiler 和 frontend_server 新增到包上傳規則

13934 確保在截圖時使用基礎 CompositorContext 的 AcquireFrame 方法

13943 使執行緒檢查器在 Apple 平臺上列印執行緒名稱。

13945 將 SwiftShader 更新到 5d1e854。

13962 添加了自動審查者配置檔案

13975 重構為透過 const ref 傳遞函式

14082 在 flutter web engine 中新增指標資料清理

外掛

#

我們在外掛方面取得了重大改進。我們升級了一組外掛以支援 Web 開發。此外,為了支援 Add to App 場景,我們提供了一系列新 API 供現有 Android 外掛進行升級。如果您目前正在維護一個 Android 外掛。我們鼓勵您檢視遷移外掛到新 API 文件,並相應地升級您的外掛。

1984 移除 Flutterfire 外掛(已移至 FirebaseExtended)

2004 [cirrus] 為 all_plugins 測試使用 flutter create

2009 修復感測器單元測試

2036 video player 版本修復

2055 指向新的開源網站位置

2084 [update] local_auth - intl 版本

2112 執行 flutter_plugin_tools format

2141 BugFix: formatHint 是為網路流設計的。

2154 使用穩定的 Flutter 映象作為基礎

2161 重新命名 instrumentation_adapter 外掛為 e2e 外掛

2205 s/flutter_android_lifecycle/flutter_plugin_android_lifecycle/

2230 禁止 ... 實現 UrlLauncherPlatform

2231 [cleanup] 移除 AndroidX 警告

2236 使用包匯入匯入 lib/ 目錄內的檔案。

2250 使用 flutter stable 的 pub 版本進行釋出

2260 使 setMockInitialValues 處理非字首鍵

2275 將 google_maps_flutter pubspec 版本提升到與 CHANGELOG 匹配

2271 [infra] 在 CI 中忽略分析器問題

2280 新增 google_sign_in_web 外掛。

外掛:Android Alarm Manager

#

我們在 Android Alarm Manager 外掛中添加了在回撥中獲取 id 的功能。

1985 [android_alarm_manager] 添加了在回撥中獲取 id 的能力

外掛:Android Intent

#

我們在 Android Intent 外掛中進行了多項改進,包括添加了傳遞 intent 標誌(由社群成員貢獻!)的能力,並將其升級到新外掛 API

2000 [android_intent] 新增 flags 選項

2045 [android_intent] 新增 action_application_details_settings

2143 [android_intent] 遷移到新的嵌入

2188 [android_intent] 提升 Flutter SDK 最低版本

2202 [android_intent] 在呼叫 resolveActivity 之前必須提供 componentName

2221 [android_intent]移除 AndroidX 約束

2268 [android_intent] 新增缺失的 DartDocs

外掛:Battery

#

Battery 外掛中的通用 bug 修復。

2189 [battery] 放寬示例應用程式的最低 Flutter 版本要求

外掛:Camera

#

我們將 Camera 外掛升級到了新外掛 API,並進行了一些 bug 修復。

2057 [Camera] 修復 NullPointerException

2123 [camera] 修復事件型別檢查

2219 [camera]移除 androidx 約束

外掛:Connectivity

#

Connectivity 外掛中的通用 bug 修復。

2212 [connectivity]移除 AndroidX 約束

2262 [connectivity] 新增更多文件,刪除 example/README

外掛:e2e

#

e2e 外掛中的通用 bug 修復。

2022 [instrumentation_adapter] 更新 README 說明

2023 [instrumentation_adapter] 更新模板以使用 @Rule 而不是 FlutterTest

2024 [instrumentation_adapter] 更新 CODEOWNERS

2051 [instrumentation_adapter] 為 release 更新

2075 [instrumentation_adapter] 將示例遷移到 AndroidX

2178 [e2e] 更新 README

2190 [e2e] 更新以支援新的嵌入器

2233 [e2e] 更新 README

外掛:Google Maps Flutter

#

我們在 Google Maps 外掛中進行了多項改進,包括添加了顯示交通圖層的功能。

1702 [google_maps_flutter] Marker 拖動事件

1767 [google_maps_flutter] 添加了顯示交通圖層的支援

1784 [google_maps_flutter] 允許 CameraPosition 的(反)序列化

1933 [google_maps_flutter] 避免不必要的重繪

2053 [google_maps_flutter] 修復與 prefer_const_constructors 相關的分析器故障

2065 [google_maps_flutter] 優先使用 const 建構函式。

2076 [google_maps_flutter] 在 GoogleMap 中克隆快取的元素

2108 [google_maps_flutter] 將 Projection 方法新增到 google_maps

2113 [google_maps_flutter] 避免 AbstractMethod 崩潰

2242 [google_maps_flutter] 將 error.code 轉換為 unsigned long 以避免使用 NSInteger 作為 %ld 格式警告。

外掛:Google Sign In

#

我們在 Google Sign In 外掛中進行了一些 bug 修復。同時,我們將其轉換為聯合外掛,以幫助其更有效地擴充套件到多個平臺。有關更多資訊,請參閱聯合外掛

2059 [google_sign_in] 在錯誤處理區域修復鏈式非同步方法

2127 [google_sign_in] 透過升級 CocoaPod 到 5.0 來修復已棄用的 API 使用問題

2244 [google_sign_in] 將外掛移動到其子目錄中,以允許聯合實現

2252 [google_sign_in] 在 GoogleUserCircleAvatar 中處理新樣式的 URL

2266 [google_sign_in] 移植外掛以使用聯合 Platform Interface

外掛:Image Picker

#

Image Picker 外掛中的通用 bug 修復。

2070 [image_picker] 當源影像方向為 left 或 right 時,交換寬度和高度

2293 [image_picker]修復選擇非影像檔案時崩潰的問題。

外掛:In App Purchase

#

In App Purchase 外掛中的通用 bug 修復。

2014 [In_App_Purchase] 避免了後臺註冊時可能的 NullPointerException。

2016 [In_App_Purchase] 提高可測試性

2027 [in_app_purchase] 移除已跳過的 driver 測試

2215 [in_app_purchase] 移除 AndroidX 約束

外掛:Local Auth

#

Local Auth 外掛中的通用 bug 修復。

2047 [local_auth] 在面部解鎖時避免使用者確認

2111 [local_auth] 停止認證的 API

外掛:Package Info

#

Package Info 外掛中的通用 bug 修復。

2218 [package_info]移除 AndroidX 約束

外掛:Path Provider

#

在 Path Provider 外掛中,我們添加了 getApplicationLibraryDirectory,這是由社群成員貢獻的!

1953 [path_provider] 新增 getApplicationLibraryDirectory

1993 [pathprovider] 修復 fall through bug

2288 [path_provider] 新增缺失的 DartDocs

外掛:Share

#

Share 外掛中的文件更新。

2297 [share] README 更新

外掛:Shared Preferences

#

Shared Preferences 外掛中的通用 bug 修復。

2241 [Shared_preferences]抑制警告

2296 [shared_preferences] 新增缺失的 DartDoc

外掛:Url launcher

#

我們已將 Url launcher 外掛升級到新外掛 API,並修復了一些 bug。同時,我們已將 Url launcher 轉換為聯合外掛,以幫助其更有效地擴充套件到多個平臺。有關更多資訊,請參閱聯合外掛

2038 [url_launcher] 初始化期間移除對 rootViewController 的引用

2136 [url_launcher_web] 修復 README.md pubspec 示例

2217 [url_launcher] 新增 url_launcher_platform_interface 包

2220 [url_launcher]remove AndroidX constraint

2228 [url_launcher] 使用 url_launcher_platform_interface 處理呼叫

2237 [url_launcher] 將 url_launcher_web 遷移到平臺介面

2274 [url_launcher] DartDoc 和測試改進

外掛:Video Player

#

我們將 Video Player 外掛升級到了新外掛 API,並進行了一些 bug 修復。同時,我們已將其轉換為聯合外掛,以幫助其更有效地擴充套件到多個平臺。有關更多資訊,請參閱聯合外掛

1813 [video-player] 新增對內容 URI 作為 url 的支援

1998 [video_player] 修復已棄用成員使用

2124 [video_player] 將 [player dispose] 移至 onUnregistered

2158 [video_player] VideoPlayerController 初始化基本測試

2273 [video_player] 新增平臺介面

2286 [video_player] 改進 DartDocs 和測試覆蓋率

外掛:Webview Flutter

#

我們將 Webview Flutter 外掛升級到了新外掛 API,並進行了一些 bug 修復。

1996 [webview_flutter] 允許 JavaScript Channel 名稱中的下劃線

2257 [webview_flutter] 新增非同步 NavigationDelegates

工具

#

Flutter 工具也是這個版本的重要投資。我們推出了新版本的DartPad,允許您直接在瀏覽器中玩 Flutter,而無需安裝任何東西;釋出了一個新功能“Hot UI”(預覽版),允許您直接在 IDE 中與小部件互動;增強了 Dart DevTools,增加了一個新的視覺化佈局檢視;在 Visual Studio Code 中啟用了同時多裝置除錯;並添加了對“golden”影像測試的支援。

除了下面列出的 PR 之外,請也檢視以下 IntelliJ 和 Android Studio Flutter 外掛、VS Code Flutter 外掛和 Dart DevTools 的版本:

VS Code

#

Flutter IntelliJ 和 Android Studio 外掛

#
  • 2019 年 10 月 1 日:Flutter IntelliJ 外掛 M40 Release
  • 2019 年 11 月 1 日:Flutter IntelliJ 外掛 M41 Release
  • 2019 年 12 月 5 日:Flutter IntelliJ 外掛 M42 Release

DevTools

#

工具 PR

#

37508 使用 assemble 構建 bundle

37642 build.dart::GenSnapshot 的單元測試

37832 為 devicelab runner 新增 --exit 和 --match-host-platform 預設值

37845 將錯誤訊息 echo 到 stderr

38560 重構 cocoapods 驗證器以檢測損壞的安裝

38576 flutter_tools/version: git log.showSignature=false

38632 Flutter Plugin Tool 支援多平臺外掛配置

38654 [flutter_tool] 移除一些非同步檔案 io

38869 為每個構建配置儲存檔案雜湊。

38894 [flutter_tool] 將 http 請求關閉移至 try-catch

38907 當熱過載進入錯誤狀態時丟擲錯誤

38920 [flutter_tool] 處理 doctor validator 的崩潰

38925 [flutter_tool] 每個執行只發送一個崩潰報告

38932 為非 debug 桌面構建新增構建警告

39000 呼叫 assemble 時不丟擲 StateError

39005 [flutter_tool] 教崩潰報告程式處理 HttpException

39013 將包版本更新到最新

39052 使 forward 呼叫互動式執行

39136 [flutter_tool] 為 'version' 提供一些額外的輸入驗證

39140 將命令移到它們自己的分片中

39147 降低 AndroidX 警告級別

39274 在 assemble 規則中使用 output dir 代替特定路徑

39280 [flutter_tool] 為 xcode showBuildSettings 設定超時

39358 報告 build runner 的錯誤

39445 [flutter_tool] 向 asyncGuard 新增 onError 回撥。在 Doctor 中使用它

39524 在 flutter_tools 中註冊 flutterVersion 服務。

39530 保留 profile 的符號

39541 處理單個不支援的裝置

39555 使用功能標誌來控制構建命令的可見性

39558 從 skip build 指令碼檢查中過濾錯誤訊息

39579 [flutter_tools] 為另一個 showBuildSettings 命令新增超時

39654 使用持久化構建資訊自動清理舊輸出

39699 檢測何時覆蓋 MingW 的 Git Bash,修復路徑

39781 將 lib/generated_plugin_registrant.dart 新增到 gitignore

39782 允許為 Xcode getInfo 指定專案

39899 [flutter_tool] process.dart 清理

39997 移除 visibleForTesting 註解;此建構函式在外部使用…

40029 [BUG] 處理 intent-filter 的所有子項,而不是僅處理第一個子項,以識別預設活動

40131 確保我們使用來自 Flutter SDK 的 pub

40159 [flutter_tool] 在嘗試排空流之前終止超時程序

40171 將熱過載工件放置在臨時目錄中

40195 使 Swift 外掛模板符合 swift-format 標準

40210 確保我們使用 dwds 啟動

40259 從庫中移除 io 和 isolate

40366 將現有 dill 放入熱過載臨時目錄以提高初始化時間

40368 確保 dart2js 不會編譯不支援的包

40397 在未安裝 VS 時列出必需的元件

40410 移除 flutter tool 對 protobuf 的使用

40435 [flutter_tool] 移除同步的 -showBuildSettings

40472 啟動桌面應用程式時不要終止其他程序

40783 確保除錯構建只能透過 run 訪問

40795 更新工具鏈描述以請求最新版本

40968 在 flutter_tools 中新增缺失的尾隨逗號

40988 [flutter_tool] 在命令分析事件中報告 RSS 高水位線

41224 修復 flutter 報告錯誤,修正本地小部件

41304 [flutter_tools] 允許新增多個訊號處理程式

41401 沒有 --precompiled 的 Flutter build bundle 應始終執行除錯構建。

41406 在 devfs 上傳失敗時重試。

41424 在編譯被拒絕時不要更新最後編譯時間

41447 切換到 assemble API 用於 dart2js

41493 [flutter_tool] 當工具被訊號終止時,報告給分析

41514 確保我們能在本地引擎中找到 dart.exe

41519 僅將 desktop stopApp 應用於 Flutter 啟動的程序

41583 新增除錯選項,在啟動後將 vmservice 地址寫入檔案

41610 在 build_runner 中跟蹤未使用的輸入

41621 將 mDNS 發現中的日誌記錄更改為僅在 verbose 模式下顯示

41652 [flutter_tools] 為 pub get 失敗事件新增更多資訊

41687 在 test_utils getPackages() 中使用 processManager.run() 而不是手動捕獲流

41697 處理 Flutter tool 中預構建工件的缺失 .packages 檔案

41735 處理資源列表中的空條目並新增更明確的驗證

41751 新增對下載 x86 JIT release artifact 的支援

41788 透過移除單個使用的檔案來減少日誌詳細程度

41832 在除錯模式下將 --enable-asserts 傳遞給 frontend_server 呼叫…

41862 將輸出目錄設為構建輸入

41989 Flutter doctor 應要求 Java 1.8+

42008 稍微重構 ProjectFileInvalidator.findInvalidated

42016 [flutter_tool] 重做分析事件以使用標籤和值

42026 停止洩漏 iproxy 程序

42028 使 ProjectFileInvalidator.findInvalidated 能夠使用非同步 FileStat.stat

42187 pub 失敗時更詳細地顯示錯誤資訊

42209 為 flutter generate 新增錯誤日誌記錄

42243 改進尾隨空格訊息

42252 捕獲 Make 的引數錯誤

42353 向 drive 和 run 新增 --cache-sksl 標誌

42354 將 -Ddart.developer.causal_async_stacks=true 傳遞給 frontend_server 呼叫。

42364 將 dwds 包裝在 async 守衛中,僅捕獲已知的錯誤型別

42373 使用 process utils 切換構建命令

42376 新增預快取未簽名 Mac 二進位制檔案的選項。

42471 將構建模式特定的位元組碼生成選項傳遞給 frontend_server。

42476 重構 BuildMode 為類,新增 jit_release 配置

42491 對 pub 修改時間斷言進行額外的防禦性程式設計

42538 [flutter_tool] 改進 yaml 字型對映驗證

42597 修正萬用字元資源測試的抖動問題

42655 resident_web_runner 沒有關閉除錯連線

42656 捕獲 AppConnectionException 錯誤

42668 為 run_cold.dart 在 cleanupAtFinish() 中處置裝置

42698 確保在瀏覽器連線完成後停止狀態顯示

42791 修復 manifest 資源包中的型別錯誤

42813 修復 Chrome Device 中的 NPE

42972 遇到服務響應中的新型別時不要產生錯誤。

42977 切換 dart2js 構建為 depfile,移除 Source.function

43016 確保可以在除錯模式下停用 --track-widget-creation

43022 在 drive 中啟用 dump-skp-on-shader-compilation

43042 將 samsungexynos7570 新增到已知物理裝置列表中

43080 使用 4 個空格縮排 Kotlin 程式碼

43180 在外掛驗證檢查中新增缺失的 break

43217 [flutter_tool] 更新分析策略,在停用時傳送事件

43219 為增量編譯器 JavaScript 包新增 devfs

43225 捕獲 io.StdinException,它可能由於無法設定 stdin echo/line 模式而發生

43281 新增編譯器配置以支援 dartdevc 目標

43292 增量編譯器支援的初始引導指令碼

43381 [flutter_tool] 使用 engine flutter_runner 預構建件

43390 捕獲 dwds 的 ChromeDebugException

43401 處理 flutter clean 期間的許可權錯誤

43402 處理 vswhere 的格式錯誤

43403 處理版本和選項偏差錯誤

43436 處理具有可選引數的 onError 回撥

43448 不要在外掛登錄檔模板中對 HTML 進行轉義。

43471 預設啟用 track widget creation

43544 捕獲 AppConnectionException

43546 別名 upgrade-packages => update-packages

43577 為桌面構建設定 trace 為 true

43586 確保在標籤關閉時關閉 Chrome

43598 捕獲失敗的守護程序啟動錯誤

43599 捕獲解析 FLUTTER_STORAGE_BASE_URL 失敗的錯誤

43602 不要無限期地持久化檔案雜湊,處理更多錯誤情況

43667 為 sourceReport 對映中的 ranges 添加了 null 檢查。

43725 新增 reloadMethod RPC

43753 將 --no-gen-bytecode 傳遞給 aot 核心編譯器呼叫

43764 更新 create.dart

43767 檢查 libimobiledevice 可執行檔案是否存在

43800 修復 logger 測試的抖動問題

43862 確保始終傳遞目標平臺

43870 檢查 instanceof 而不是 runtimeType

43907 在 release dev 伺服器上提供正確的 mime 型別

43908 移除 --no-gen-bytecode 標誌

43945 移除 Source.behavior,修復 depfile 無效化中的 bug

44017 資源伺服器修復 sourcemaps 問題

44027 允許指定 device-vmservice-port 和 host-vmservice-port

44032 將 chrome 首選項複製到 seeded data 目錄

44052 移除 flutter_tool services 程式碼

44083 新增 --dart-define 選項

44119 [flutter_tool] --flutter_runner 將下載除錯符號

44146 移除 flutter.yaml 遷移程式碼

44200 使 ProjectFileInvalidator 可注入

44221 使用平臺相容的檔案路徑

44227 [flutter_tool] 截圖命令必須僅對 _kDeviceType 需要裝置

44278 不向 front-end server 傳遞已棄用的 --strong 選項

44279 profile 模式下 link platform 應為 true

44360 [flutter_tool] 將工件下載流式傳輸到檔案

44447 flutter_tools/lib 上的 implicit-casts:false

44481 為 target 類提供特定欄位以接受 depfiles

44488 testbed.run 和 testbed.test 的重構

44574 當修改設定時,列印一條訊息,提示您可能需要重新載入 IDE/編輯器

44608 減少一些直接使用 package:archive 的情況

44753 始終連結桌面平臺

44868 在 doctor 期間捕獲並顯示版本檢查錯誤

44933 [flutter_tool] 在刪除下載的工件失敗時不要崩潰

44966 在構建失敗時不要將堆疊跟蹤記錄到控制檯

45011 在 IOSDevice.startApp() 中捕獲 IOSDeviceNotFoundError

45153 flutter_tools 上的 implicit-casts:false

45236 透過與平臺構建併發初始化 frontend_server,提高開發速度

45239 fuchsia_remote_debug_protocol 上的 implicit-casts:false

45303 允許 pubspec 外掛部分中的未知欄位

45317 在守護程序模式下反轉 dartDefines 的 null 值

45319 捕獲損壞配置的解析錯誤

45364 允許外掛平臺使用 no-op default_package 鍵

43544 捕獲 AppConnectionException

46011 [flutter_tool] 在執行“升級”操作時,如果它是無操作,則不要繼續。

完整 PR 列表

#

有關 1.12 發行版中已合併的 PR 的完整列表,請參見此列表。