# Flutter 1.9.1 發行說明

> Flutter 1.9.1 的發行說明。



哈囉，歡迎來到又一個 Flutter 穩定版（stable）通道發行說明。今年到目前為止，我們每季發行一個穩定版，完全符合[我們的計畫](https://github.com/flutter/flutter/blob/master/docs/releases/Flutter-build-release-channels.md)（其實與其說是計畫，不如說是目標，但到目前為止一切進展順利……）。這次是我們迄今規模最大的發行版，共有 116 位貢獻者合併了 620 個 Pull Request。與往常一樣，有趣的 PR 列在下方。此版本有許多值得討論的有趣事項，包括：

*   One regression fixed but also one added
*   Some breaking API changes
*   Some severe issues caught and fixed
*   Support for macOS Catalina and iOS 13
*   A number of new features
*   And more!

需要說明的是，當我說「我們」時，我指的是整個 Flutter 社群。沒有所有貢獻者的支持，不論你的雇主是誰，Flutter 團隊絕不可能持續以如此規模成長。感謝大家的貢獻！


## 迴歸問題

在本版本中，我們修正了一個迴歸問題（[37955](https://github.com/flutter/flutter/pull/37955) Update shader warm-up for recent Skia changes），但也引入了另一個（[38167](https://github.com/dart-lang/sdk/issues/38167) Incremental compiler re-issuing of errors from constant evaluator）。新引入的迴歸問題已在 1.9.1 穩定版（stable）通道發行後修正（[00d14e7](https://github.com/dart-lang/sdk/commit/00d14e7) [CFE] Always start constant evaluation error where we are asked to evaluate），若您遇到此問題，可選擇更新的建置版本以套用至您的 Flutter 應用程式。


## 破壞性 API 變更

我們盡力避免破壞性變更，但在推動 Flutter 進入新場景與新平台的過程中，我們也不希望建立不直觀的 API。以下是本版本的破壞性變更，請參閱相關公告以更新您的程式碼。

[33281](https://github.com/flutter/flutter/pull/33281) ([announcement](https://groups.google.com/forum/#!msg/flutter-announce/ZmnseDOW9Wc/5K7xD0V8BwAJ)) Update TextStyle and StrutStyle height docs

[34019](https://github.com/flutter/flutter/pull/34019) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/34019%7Csort:date/flutter-announce/GBFULLQxGp4/-3uujTAaCgAJ)) Selectable Text

[34665](https://github.com/flutter/flutter/pull/34665) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/34665%7Csort:date/flutter-announce/W9KQKpf0Ves/6bdDq_U8CQAJ)) Selection handles position is off

[35110](https://github.com/flutter/flutter/pull/35110) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/35110%7Csort:date/flutter-announce/FHicLlzr9gQ/OM9KgLxMBwAJ)) Always test semantics

[35136](https://github.com/flutter/flutter/pull/35136) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/35136%7Csort:date/flutter-announce/UrhJwkaKaSc/ONoMzKrtAwAJ)) Update Dark Theme disabledColor to White38

[35785](https://github.com/flutter/flutter/pull/35785) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/35785%7Csort:date/flutter-announce/AL5ure2NWNI/4gPoziQSBAAJ)) Remove reverseDuration from implicitly animated widgets, since it's ignored.

[36030](https://github.com/flutter/flutter/pull/36030) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/36030%7Csort:date/flutter-announce/bN6vFnoVpmk/7UCOxj6LCwAJ)) [Material] Implement TooltipTheme and Tooltip.textStyle, fix Tooltip debugLabel, update Tooltip defaults

[36106](https://github.com/flutter/flutter/pull/36106) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/36106%7Csort:date/flutter-announce/Yo3WxDCria4/AgNUznoZBgAJ)) Updated ColorScheme.dark() colors to match the Material Dark theme specification

[36217](https://github.com/flutter/flutter/pull/36217) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/36217%7Csort:date/flutter-announce/3vyI_41YX44/yQy0MHAuBgAJ)) Split Mouse from Listener

[36402](https://github.com/flutter/flutter/pull/36402) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/36402%7Csort:date/flutter-announce/taTeI07sK0w/-fsJvpfCFQAJ)) Teach render objects to reuse engine layers

[36856](https://github.com/flutter/flutter/pull/36856) (no announcement) [Material] Implement TooltipTheme and Tooltip.textStyle, update Tooltip defaults

[36964](https://github.com/flutter/flutter/pull/36964) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/36964%7Csort:date/flutter-announce/IALsYuwhzNk/OaP1ijOhCwAJ)) Interactive size const

[37338](https://github.com/flutter/flutter/pull/37338) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/37338%7Csort:date/flutter-announce/ZNX-Rd6IKSQ/3K4-1_skDAAJ)) Update constructor APIs TooltipTheme, ToggleButtonsTheme, PopupMenuTheme

[37341](https://github.com/flutter/flutter/pull/37341) (no announcement) hiding original hero after hero transition

[37544](https://github.com/flutter/flutter/pull/37544) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/37544%7Csort:date/flutter-announce/Igg0DuIO6Zg/2QroNaSkDAAJ)) Replace ButtonBar.bar method with ButtonBarTheme

[37652](https://github.com/flutter/flutter/pull/37652) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/37652%7Csort:date/flutter-announce/bTliCEss-VA/CfqN9DCWEwAJ)) Change RenderObject.getTransformTo to include ancestor.

[37736](https://github.com/flutter/flutter/pull/37736) ([announcement](https://groups.google.com/forum/#!searchin/flutter-announce/37736%7Csort:date/flutter-announce/-kotruZbBDQ/vny4JjFmFQAJ)) Added a composable waitForCondition Driver/extension API


## 嚴重問題：崩潰、客戶關鍵與效能修正

在 Flutter 中，我們努力在每個發行版中提升品質。這次我們修正了數個嚴重問題，包括崩潰、客戶關鍵問題及效能問題。

[34907](https://github.com/flutter/flutter/pull/34907) Fixed LicensePage to close page before loaded the License causes an error

[35223](https://github.com/flutter/flutter/pull/35223) Navigator pushAndRemoveUntil Fix

[36097](https://github.com/flutter/flutter/pull/36097) Fix nested scroll view can rebuild without layout

[37033](https://github.com/flutter/flutter/pull/37033) fix debug paint crash when axis direction inverted

[37254](https://github.com/flutter/flutter/pull/37254) Clamp Scaffold's max body height when extendBody is true

[34298](https://github.com/flutter/flutter/pull/34298) Preserving SafeArea : Part 2

[37718](https://github.com/flutter/flutter/pull/37718) Adding physicalDepth to MediaQueryData & TestWindow

[35297](https://github.com/flutter/flutter/pull/35297) Fix the first frame logic in tracing and driver


## 新功能

此版本同時帶來兩個新的 Material 元件 (Widget)：ToggleButtons 元件（在 iOS 上稱為 [segmented control](https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls/)）和 ColorFilter 元件（詳見下方「文字與無障礙」章節）。若想了解這些元件的實際效果，請參考簡短的 [ToggleButtons](https://github.com/csells/flutter_toggle_buttons) 與 [ColorFilter](https://github.com/csells/flutter_color_filter) 範例。此外，SelectableText 元件允許使用者選取唯讀文字。

[34599](https://github.com/flutter/flutter/pull/34599) [Material] ToggleButtons

[34019](https://github.com/flutter/flutter/pull/34019) Selectable Text

[35207](https://github.com/flutter/flutter/pull/35207) refactor out selection handlers

[36030](https://github.com/flutter/flutter/pull/36030) [Material] Implement TooltipTheme and Tooltip.textStyle, fix Tooltip debugLabel, update Tooltip defaults

[36411](https://github.com/flutter/flutter/pull/36411) Implement InputDecorationTheme copyWith, ==, hashCode

[36856](https://github.com/flutter/flutter/pull/36856) [Material] Implement TooltipTheme and Tooltip.textStyle, update Tooltip defaults

[36963](https://github.com/flutter/flutter/pull/36963) Add margins to tooltips

[37266](https://github.com/flutter/flutter/pull/37266) Change the value of kMaxUnsignedSMI for the Web

[37341](https://github.com/flutter/flutter/pull/37341) hiding original hero after hero transition

[37492](https://github.com/flutter/flutter/pull/37492) Drawer edge drag width improvements


## macOS Catalina 支援

隨著 macOS Catalina 即將發行，我們確保工具鏈在您遷移至 Catalina、iOS 13 及 Xcode 11 的過程中能持續順暢運作。需要特別注意的是，**在升級至 Catalina 之前，請先升級至 Flutter 1.9.1 穩定版（stable）通道**。另一個順序也可行，但這樣做會看到一個錯誤（這個[錯誤](https://github.com/flutter/flutter/issues/33890)無害，但還是要注意……）。

[38325](https://github.com/flutter/flutter/pull/38325) refactor flutter upgrade to be 2 part, with the second part re-entrant

[cd70b](https://github.com/dart-lang/sdk/commit/ec2d06d4b9f4f0accad2b4aa841499e8e93cd70b) Use MAP_JIT when doing an mmap for executable pages (needed for macOS Catalina).

[38662](https://github.com/flutter/flutter/pull/38662) Change from using defaults to plutil for Plist parsing

[2856](https://github.com/flutter/website/issues/2856) Update "Getting Started" path setup to support zsh shell (macOS Catalina support)

[2857](https://github.com/flutter/website/issues/2857) Update "iOS Setup" page to reflect Xcode 11 UI update

[37733](https://github.com/flutter/flutter/pull/37733) Support macOS Catalina-style signing certificate names

[10010](https://github.com/flutter/engine/pull/10010) Use simarm_x64 when targeting arm

[37407](https://github.com/flutter/flutter/pull/37407) Remove multi-arch check in iOS builds

[37445](https://github.com/flutter/flutter/pull/37445) Switch iOS gen_snapshot from multi-arch binary to multiple binaries

[37647](https://github.com/flutter/flutter/pull/37647) Change priority of gen_snapshot search paths


## iOS

本版本有超過 50 個 PR，iOS 支援持續是 Flutter 的重點，包括 iOS 13 捲軸實作（支援長按、從右側拖曳及震動回饋）、更新 CupertinoSwitch 元件以符合 iOS 13 規範，以及持續對 bitcode 的實驗性支援。

[35829](https://github.com/flutter/flutter/pull/35829) iOS 13 scrollbar

[37724](https://github.com/flutter/flutter/pull/37724) iOS 13 scrollbar vibration

[36087](https://github.com/flutter/flutter/pull/36087) Update visual style of CupertinoSwitch to match iOS 13

[38587](https://github.com/flutter/flutter/pull/38587) Improve bitcode check

[36471](https://github.com/flutter/flutter/pull/36471) Enable bitcode compilation for AOT

[36093](https://github.com/flutter/flutter/pull/36093) Reland bundle ios deps

[34676](https://github.com/flutter/flutter/pull/34676) Enable selection by default for password text field and expose api to…

[34723](https://github.com/flutter/flutter/pull/34723) CupertinoTextField vertical alignment

[34964](https://github.com/flutter/flutter/pull/34964) CupertinoTextField.onTap

[35303](https://github.com/flutter/flutter/pull/35303) fix default artifacts to exclude ios and android

[35307](https://github.com/flutter/flutter/pull/35307) Clean up host_app_ephemeral Profile build settings

[35731](https://github.com/flutter/flutter/pull/35731) Keep LLDB connection to iOS device alive while running from CLI.

[35749](https://github.com/flutter/flutter/pull/35749) add iOS build benchmarks

[35756](https://github.com/flutter/flutter/pull/35756) Remove @objc inference build setting

[35763](https://github.com/flutter/flutter/pull/35763) UIApplicationLaunchOptionsKey -> UIApplication.LaunchOptionsKey

[35833](https://github.com/flutter/flutter/pull/35833) Disable CocoaPods input and output paths in Xcode build phase for ephemeral add-to-app project

[36174](https://github.com/flutter/flutter/pull/36174) [cupertino_icons] Add glyph refs for brightness #16102

[36194](https://github.com/flutter/flutter/pull/36194) Keep LLDB connection to iOS device alive while running from CLI.

[36498](https://github.com/flutter/flutter/pull/36498) Clean up host_app_ephemeral_cocoapods Profile build settings

[36793](https://github.com/flutter/flutter/pull/36793) Vend Flutter module App.framework as a local CocoaPod pod to be installed by a host app

[36887](https://github.com/flutter/flutter/pull/36887) Fix thumb size calculation

[37026](https://github.com/flutter/flutter/pull/37026) Add support for the Kannada (kn) locale

[37048](https://github.com/flutter/flutter/pull/37048) use SizedBox instead of Container for building collapsed selection

[37276](https://github.com/flutter/flutter/pull/37276) Make podhelper.rb a template to avoid passing in the module name

[37319](https://github.com/flutter/flutter/pull/37319) resizeToAvoidBottomInset Cupertino without NavBar

[37449](https://github.com/flutter/flutter/pull/37449) If xcode_backend.sh script fails or substitute variables are missing, fail the host Xcode build

[37738](https://github.com/flutter/flutter/pull/37738) Use relative paths when installing module pods

[37809](https://github.com/flutter/flutter/pull/37809) Add autofocus parameter to widgets which use Focus widget internally

[37906](https://github.com/flutter/flutter/pull/37906) Always install the ephemeral engine copy instead of fetching from CocoaPods specs

[38593](https://github.com/flutter/flutter/pull/38593) Fix text scale factor for non-content components of Cupertino scaffolds

[38629](https://github.com/flutter/flutter/pull/38629) Handle case of a connected unpaired iOS device

[38645](https://github.com/flutter/flutter/pull/38645) Rename iOS arch for macOS release mode (macOS release mode 2 of 3)

[9075](https://github.com/flutter/engine/pull/9075) IOS Platform view transform/clipping

[9464](https://github.com/flutter/engine/pull/9464) Added shebangs to ios unit test scripts.

[9478](https://github.com/flutter/engine/pull/9478) iOS PlatformView clip path

[9491](https://github.com/flutter/engine/pull/9491) Purge caches on low memory on iOS

[9636](https://github.com/flutter/engine/pull/9636) Added shebangs to ios unit test scripts. (#9464)

[9667](https://github.com/flutter/engine/pull/9667) iOS platform view opacity

[9722](https://github.com/flutter/engine/pull/9722) Forwards iOS dark mode trait to the Flutter framework (#34441).

[9819](https://github.com/flutter/engine/pull/9819) Allow for dynamic thread merging on IOS for embedded view mutations

[9952](https://github.com/flutter/engine/pull/9952) ios: Fixed the callback for the first frame so that it isn't predicated on having a splash screen.

[10186](https://github.com/flutter/engine/pull/10186) Ensure debug-mode apps are always attached on iOS.

[10381](https://github.com/flutter/engine/pull/10381) Fix empty composing range on iOS

[10386](https://github.com/flutter/engine/pull/10386) Don't use DBC for hot-reload on iOS.

[10645](https://github.com/flutter/engine/pull/10645) Don't use DBC for hot-reload on iOS.

[10656](https://github.com/flutter/engine/pull/10656) fix iOS keyboard crash : -[__NSCFString substringWithRange:], range o…

[10662](https://github.com/flutter/engine/pull/10662) bump local podspec's ios deployment target version from 7.0 to 8.0

[10777](https://github.com/flutter/engine/pull/10777) Manually roll Skia to pull in iOS armv7 build failure fix.

[10791](https://github.com/flutter/engine/pull/10791) Re-lands platform brightness support on iOS

[10820](https://github.com/flutter/engine/pull/10820) iOS JIT support and enhancements for scenarios app

[10949](https://github.com/flutter/engine/pull/10949) Fix iOS references to PostPrerollResult

[11006](https://github.com/flutter/engine/pull/11006) On iOS report the preferred frames per second to tools via service protocol.


## Android

本版本 Android 最重要的新增功能，是支援新的 flutter 指令：`flutter build aar`。這個新的建置指令與 `flutter build apk` 或 `flutter build appbundle` 的運作方式相同，但適用於插件和模組專案。透過將插件建置為 [AAR](https://developer.android.com/studio/projects/android-library)，Android Gradle 插件可使用 Jetifier 將所有插件原生程式碼的支援函式庫轉換為 AndroidX 函式庫，從而降低在應用程式中使用 AndroidX 時的錯誤率。

[35217](https://github.com/flutter/flutter/pull/35217) Add flutter build aar

[36732](https://github.com/flutter/flutter/pull/36732) Flutter build aar

[10778](https://github.com/flutter/engine/pull/10778) Build JARs containing the Android embedding sources and the engine native library

[34573](https://github.com/flutter/flutter/pull/34573) Ensures flutter jar is added to all build types on plugin projects

[36695](https://github.com/flutter/flutter/pull/36695) Android visible password input type support

[36805](https://github.com/flutter/flutter/pull/36805) Allow flavors and custom build types in host app

[37194](https://github.com/flutter/flutter/pull/37194) [flutter_tool] More gracefully handle Android sdkmanager failure

[37405](https://github.com/flutter/flutter/pull/37405) Add .android/Flutter/flutter.iml to module template.

[37752](https://github.com/flutter/flutter/pull/37752) Remove dead flag gradle-dir in flutter config

[9206](https://github.com/flutter/engine/pull/9206) Android Embedding Refactor PR31: Integrate platform views with the new embedding and the plugin shim.

[9360](https://github.com/flutter/engine/pull/9360) Simplify loading of app bundles on Android

[9476](https://github.com/flutter/engine/pull/9476) fix NPE when a touch event is sent to an unknown Android platform view

[9501](https://github.com/flutter/engine/pull/9501) [android] External textures must be rescaled to fill the canvas

[9525](https://github.com/flutter/engine/pull/9525) Android Embedding Refactor PR36: Add splash screen support.

[9895](https://github.com/flutter/engine/pull/9895) Android Embedding PR37: Separated FlutterActivity and FlutterFragment via FlutterActivityAndFragmentDelegate

[9999](https://github.com/flutter/engine/pull/9999) Add support for Android's visible password input type

[10250](https://github.com/flutter/engine/pull/10250) Android Embedding Refactor 38: Removed AssetManager from DartEntrypoint.

[10413](https://github.com/flutter/engine/pull/10413) Pass Android Q insets.systemGestureInsets to Window

[10424](https://github.com/flutter/engine/pull/10424) Fix deprecation warnings in the Android embedding

[10481](https://github.com/flutter/engine/pull/10481) Android embedding refactor pr40 add static engine cache

[10771](https://github.com/flutter/engine/pull/10771) Don't use gradle daemon for building

[11001](https://github.com/flutter/engine/pull/11001) Avoid dynamic lookups of the engine library's symbols on Android

[11015](https://github.com/flutter/engine/pull/11015) Remove the output directory prefix from the Android engine JAR filename


## Material

當然，Material 設計語言也持續是 Flutter 的重點發展方向。

[34869](https://github.com/flutter/flutter/pull/34869) [Material] Properly call onChangeStart and onChangeEnd in Range Slider

[34872](https://github.com/flutter/flutter/pull/34872) [Material] Support for hovered, focused, and pressed border color on OutlineButtons

[34906](https://github.com/flutter/flutter/pull/34906) Fix unused [applicationIcon] property on [showLicensePage]

[34932](https://github.com/flutter/flutter/pull/34932) Added onChanged property to TextFormField

[35075](https://github.com/flutter/flutter/pull/35075) Allow for customizing SnackBar's content TextStyle in its theme

[35282](https://github.com/flutter/flutter/pull/35282) Add Container fallback to Ink build method

[35496](https://github.com/flutter/flutter/pull/35496) [Material] Text scale and wide label fixes for Slider and Range Slider value indicator shape

[35499](https://github.com/flutter/flutter/pull/35499) Added MaterialApp.themeMode to control which theme is used.

[35560](https://github.com/flutter/flutter/pull/35560) Support for elevation based dark theme overlay color in the Material widget

[35878](https://github.com/flutter/flutter/pull/35878) Add flag to use root navigator for showModalBottomSheet

[36028](https://github.com/flutter/flutter/pull/36028) Fix slider preferred height

[36088](https://github.com/flutter/flutter/pull/36088) Add PopupMenuTheme to enable theming color, shape, elevation, text style of Menu

[36409](https://github.com/flutter/flutter/pull/36409) Add searchFieldLabel to SearchDelegate in order to show a custom hint

[36880](https://github.com/flutter/flutter/pull/36880) [Material] Create material Banner component

[37038](https://github.com/flutter/flutter/pull/37038) Update SnackBar to the latest Material specs.

[37259](https://github.com/flutter/flutter/pull/37259) [Material] Add support for hovered, pressed, focused, and selected text color on Chips.

[37269](https://github.com/flutter/flutter/pull/37269) [Material] FAB refactor - remove unnecessary IconTheme

[37355](https://github.com/flutter/flutter/pull/37355) Added ThemeData.from() method to construct a Theme from a ColorScheme

[37403](https://github.com/flutter/flutter/pull/37403) add ontap to textformfield

[37436](https://github.com/flutter/flutter/pull/37436) Hide text selection handle after entering text

[37556](https://github.com/flutter/flutter/pull/37556) [Material] Make RawChip.selected non-nullable.

[37636](https://github.com/flutter/flutter/pull/37636) Add CheckboxListTile checkColor

[37715](https://github.com/flutter/flutter/pull/37715) Fix markdown link format

[37825](https://github.com/flutter/flutter/pull/37825) Automatic focus highlight mode for FocusManager

[37870](https://github.com/flutter/flutter/pull/37870) remove Header flag from BottomNavigationBar items

[37877](https://github.com/flutter/flutter/pull/37877) Adds DefaultTextStyle ancestor to Tooltip Overlay

[37882](https://github.com/flutter/flutter/pull/37882) Add dense property to AboutListTile

[38467](https://github.com/flutter/flutter/pull/38467) [Material] Add splashColor to FAB and FAB ThemeData

[38621](https://github.com/flutter/flutter/pull/38621) [Material] Create theme for Dividers to enable customization of thickness

[38636](https://github.com/flutter/flutter/pull/38636) Adds the arrowColor option to UserAccountsDrawerHeader (#38608)


## 文字與無障礙

本版本文字與無障礙最重要的變更是全新的 ColorFilter 支援，可讓您為整個元件 (Widget) 樹重新上色，例如為有紅綠色盲的使用者調整應用程式的顯示效果。若想了解實際效果，請參閱此 [ColorFilter 範例](https://github.com/csells/flutter_color_filter)。

[35468](https://github.com/flutter/flutter/pull/35468) Add colorFilterLayer/Widget

[9641](https://github.com/flutter/engine/pull/9641) Let pushColorFilter accept all types of ColorFilters

[9668](https://github.com/flutter/engine/pull/9668) Refactor ColorFilter to have a native wrapper

[9789](https://github.com/flutter/engine/pull/9789) fix ColorFilter.matrix constness

[34515](https://github.com/flutter/flutter/pull/34515) OutlineInputBorder adjusts for borderRadius that is too large

[35100](https://github.com/flutter/flutter/pull/35100) Add handling of 'TextInput.clearClient' message from platform to framework (#35054).

[35219](https://github.com/flutter/flutter/pull/35219) Text selection menu show/hide cases

[35493](https://github.com/flutter/flutter/pull/35493) Do not use ideographic baseline for RenderPargraph baseline

[36974](https://github.com/flutter/flutter/pull/36974) Multiline Selection Menu Position Bug

[37042](https://github.com/flutter/flutter/pull/37042) Fix selection menu not showing after clear

[38573](https://github.com/flutter/flutter/pull/38573) Clamp scrollOffset to prevent textfield bouncing

[35487](https://github.com/flutter/flutter/pull/35487) Fix RenderFittedBox when child.size.isEmpty

[36243](https://github.com/flutter/flutter/pull/36243) Allow semantics labels to be shorter or longer than raw text

[36303](https://github.com/flutter/flutter/pull/36303) Add sync star benchmark cases

[37158](https://github.com/flutter/flutter/pull/37158) Fix Textfields in Semantics Debugger

[37828](https://github.com/flutter/flutter/pull/37828) have android_semantics_testing use adb from ENV provided android sdk


## Web（技術預覽）

本版本持續推進 Flutter Web 平台支援的技術預覽，包括新增一個旗標以判斷應用程式是否在 Web 上執行。若想了解實際效果，請參閱 [flutter_mazegen 範例](https://github.com/csells/flutter_mazegen/)中的 [main.dart](https://github.com/csells/flutter_mazegen/blob/master/lib/main.dart)。如需進一步了解，請參閱 [Flutter for web](https://docs.flutter.dev/web)。

[36135](https://github.com/flutter/flutter/pull/36135) add a kIsWeb constant to foundation

[34252](https://github.com/flutter/flutter/pull/34252) Integrate dwds into flutter tool for web support

[34896](https://github.com/flutter/flutter/pull/34896) Allow multi-root web builds

[35221](https://github.com/flutter/flutter/pull/35221) Twiggle bit to exclude dev and beta from desktop and web

[36297](https://github.com/flutter/flutter/pull/36297) Add multi-line flag to semantics

[36465](https://github.com/flutter/flutter/pull/36465) Use FlutterFeatures to configure web and desktop devices

[36548](https://github.com/flutter/flutter/pull/36548) Fix the web builds by reverting version bump of build_modules

[36549](https://github.com/flutter/flutter/pull/36549) fix number encoding in message codecs for the Web

[37515](https://github.com/flutter/flutter/pull/37515) Upstream web support for IterableProperty

[37637](https://github.com/flutter/flutter/pull/37637) don't call Platform.operatingSystem in RenderView diagnostics

[37638](https://github.com/flutter/flutter/pull/37638) [web][upstream] Fix debugPrintStack for web platform

[37658](https://github.com/flutter/flutter/pull/37658) fix windows path for dwds/web builds

[37712](https://github.com/flutter/flutter/pull/37712) [web][upstream] Optimize InactiveElements deactivation

[37812](https://github.com/flutter/flutter/pull/37812) [web][upstream] Don't register exit/saveCompilationTrace for web platform since they are not available

[37815](https://github.com/flutter/flutter/pull/37815) Restructure resident web runner usage to avoid SDK users that don't support dwds

[38499](https://github.com/flutter/flutter/pull/38499) Update build web compilers and configure libraries


## 桌面（實驗性）

我們持續推進 Flutter 桌面平台的實驗性支援。若您有意參與實驗，請參閱 [Flutter 桌面殼層](https://docs.flutter.dev/desktop)。

[32770](https://github.com/flutter/flutter/pull/32770) Dismiss modal with any button press

[34660](https://github.com/flutter/flutter/pull/34660) Add --target support for Windows and Linux

[34712](https://github.com/flutter/flutter/pull/34712) Fix FocusTraversalPolicy makes focus lost

[34752](https://github.com/flutter/flutter/pull/34752) [linux] Receives the unmodified characters obtained from GLFW

[35495](https://github.com/flutter/flutter/pull/35495) mark windows and macos chrome dev mode as flaky

[36197](https://github.com/flutter/flutter/pull/36197) Fix windows, exclude widgets from others

[36722](https://github.com/flutter/flutter/pull/36722) Skip flaky test windows

[36784](https://github.com/flutter/flutter/pull/36784) [flutter_tool] Improve Windows flutter clean error message

[36845](https://github.com/flutter/flutter/pull/36845) Improve Windows build failure message

[36987](https://github.com/flutter/flutter/pull/36987) Flutter assemble for macos take 2!

[37211](https://github.com/flutter/flutter/pull/37211) Don't enable scroll wheel when scrolling is off

[37342](https://github.com/flutter/flutter/pull/37342) Fix mouse region crash when using closures

[37344](https://github.com/flutter/flutter/pull/37344) Fix mouse region double render

[37351](https://github.com/flutter/flutter/pull/37351) fix errors caught by roll of macOS assemble

[37365](https://github.com/flutter/flutter/pull/37365) only build macOS kernel in debug mode

[37425](https://github.com/flutter/flutter/pull/37425) Support for macOS release mode (1 of 3)

[37509](https://github.com/flutter/flutter/pull/37509) Use macOS ephemeral directory for Pod env script

[37664](https://github.com/flutter/flutter/pull/37664) Partial macOS assemble revert

[37891](https://github.com/flutter/flutter/pull/37891) Focus debug

[38651](https://github.com/flutter/flutter/pull/38651) Update the macOS Podfile template platform version

[9654](https://github.com/flutter/engine/pull/9654) Begin separating macOS engine from view controller

[9672](https://github.com/flutter/engine/pull/9672) Add FLEDartProject for macOS embedding

[9745](https://github.com/flutter/engine/pull/9745) Fix windows test by not attempting to open a directory as a file.

[9799](https://github.com/flutter/engine/pull/9799) Update buildroot to c4df4a7b to pull in MSVC 2017 Update 9 on Windows.

[9835](https://github.com/flutter/engine/pull/9835) [Windows] Alternative Windows shell platform implementation

[9953](https://github.com/flutter/engine/pull/9953) [macos] Add reply to binary messenger

[10009](https://github.com/flutter/engine/pull/10009) [macos] Revert check on FlutterCodecs and refactor message function]

[10189](https://github.com/flutter/engine/pull/10189) [macos] Reland function refactor

[11010](https://github.com/flutter/engine/pull/11010) Rename macOS FLE* classes to Flutter*

[36546](https://github.com/flutter/flutter/pull/36546) Unskip date_picker_test on Windows as underlying issue 19696 was fixed.


## 框架

Flutter 核心框架在本版本中新增了數項重要功能，包括額外支援 24 種新語系（[從南非荷蘭語到祖魯語](https://github.com/flutter/flutter/pull/36589)）。

[36589](https://github.com/flutter/flutter/pull/36589) Update Localizations: added 24 new locales (reprise)

[33936](https://github.com/flutter/flutter/pull/33936) New parameter for RawGestureDetector to customize semantics mapping

[34202](https://github.com/flutter/flutter/pull/34202) Remove _debugWillReattachChildren assertions from _TableElement

[34626](https://github.com/flutter/flutter/pull/34626) AsyncSnapshot.data to throw if error or no data

[34895](https://github.com/flutter/flutter/pull/34895) Remove flutter_tools support for old AOT snapshotting

[34919](https://github.com/flutter/flutter/pull/34919) Remove duplicate error parts

[35132](https://github.com/flutter/flutter/pull/35132) Reduce allocations by reusing a matrix for transient transforms in _transformRect

[35143](https://github.com/flutter/flutter/pull/35143) More HttpClientResponse Uint8List fixes

[35149](https://github.com/flutter/flutter/pull/35149) More HttpClientResponse implements Stream<Uint8List> fixes

[35232](https://github.com/flutter/flutter/pull/35232) New benchmark: Gesture semantics

[35233](https://github.com/flutter/flutter/pull/35233) Attempt skipping coverage shard if tools did not change

[35245](https://github.com/flutter/flutter/pull/35245) More preparation for HttpClientResponse implements Uint8List

[35246](https://github.com/flutter/flutter/pull/35246) attempt to not skip coverage on post commit

[35263](https://github.com/flutter/flutter/pull/35263) remove unnecessary ..toList()

[35280](https://github.com/flutter/flutter/pull/35280) benchmarkWidgets.semanticsEnabled default false.

[35288](https://github.com/flutter/flutter/pull/35288) Apply coverage skip math correctly

[35408](https://github.com/flutter/flutter/pull/35408) Remove print

[35482](https://github.com/flutter/flutter/pull/35482) Use the new service protocol message names

[35491](https://github.com/flutter/flutter/pull/35491) Include tags in SemanticsNode debug properties

[35646](https://github.com/flutter/flutter/pull/35646) Prepare for Socket implements Stream

[35725](https://github.com/flutter/flutter/pull/35725) Update annotated region findAll implementation to use Iterables directly.

[35750](https://github.com/flutter/flutter/pull/35750) use sentence case in error message titles

[35762](https://github.com/flutter/flutter/pull/35762) Refactor keymapping for resident_runner

[35828](https://github.com/flutter/flutter/pull/35828) Cleanup widgets/sliver_persistent_header.dart with resolution of dart-lang/sdk#31543

[35913](https://github.com/flutter/flutter/pull/35913) Change focus example to be more canonical (and correct)

[35932](https://github.com/flutter/flutter/pull/35932) Upgraded framework packages with 'flutter update-packages --force-upgrade'.

[35979](https://github.com/flutter/flutter/pull/35979) Optimizes gesture recognizer fixes #35658

[36262](https://github.com/flutter/flutter/pull/36262) Prevents infinite loop in Table._computeColumnWidths

[36302](https://github.com/flutter/flutter/pull/36302) Issues/30526 gc

[36333](https://github.com/flutter/flutter/pull/36333) fix sliver fixed pinned appbar

[36396](https://github.com/flutter/flutter/pull/36396) Optimize the transformRect and transformPoint methods in matrix_utils.

[36482](https://github.com/flutter/flutter/pull/36482) Sped up shader warmup by only drawing on a 100x100 surface

[36493](https://github.com/flutter/flutter/pull/36493) Fixes sliver list does not layout firstchild when child reordered

[36503](https://github.com/flutter/flutter/pull/36503) Disabling Firebase Test Lab smoke test to unblock autoroller

[36698](https://github.com/flutter/flutter/pull/36698) fixes iphone force press keyboard select crashes

[36768](https://github.com/flutter/flutter/pull/36768) add an error count field to the Flutter.Error event

[36857](https://github.com/flutter/flutter/pull/36857) Ensure user-thrown errors have ErrorSummary nodes

[36867](https://github.com/flutter/flutter/pull/36867) Add reference to StrutStyle from TextStyle

[36955](https://github.com/flutter/flutter/pull/36955) Extract common PlatformView functionality: Painting and Semantics

[37187](https://github.com/flutter/flutter/pull/37187) use FlutterError in MultiChildRenderObjectWidget

[37275](https://github.com/flutter/flutter/pull/37275) Optimize the transformRect and transformPoint methods in matrix_utils…

[37479](https://github.com/flutter/flutter/pull/37479) Remove bogus code in ContainerParentDataMixin.detach

[37497](https://github.com/flutter/flutter/pull/37497) Extract common PlatformView functionality: Gesture and PointerEvent

[37703](https://github.com/flutter/flutter/pull/37703) PlatformViewLink, handling creation of the PlatformViewSurface and dispose PlatformViewController

[37790](https://github.com/flutter/flutter/pull/37790) Doc: Image.memory only accepts compressed format

[37880](https://github.com/flutter/flutter/pull/37880) reduce mac workload

[38441](https://github.com/flutter/flutter/pull/38441) Fix getOffsetToReveal for growthDirection reversed and AxisDirection down or right

[38463](https://github.com/flutter/flutter/pull/38463) Do not construct arguments to _focusDebug when running in non-debug modes

[38639](https://github.com/flutter/flutter/pull/38639) PlatformViewLink. cached surface should be a Widget type

[38686](https://github.com/flutter/flutter/pull/38686) Rename patent file

[38704](https://github.com/flutter/flutter/pull/38704) Adds canRequestFocus toggle to FocusNode

[38710](https://github.com/flutter/flutter/pull/38710) PlatformViewLink: Rename CreatePlatformViewController to CreatePlatformViewCallback

[35335](https://github.com/flutter/flutter/pull/35335) Using custom exception class for network loading error

[35574](https://github.com/flutter/flutter/pull/35574) Fix semantics for floating pinned sliver app bar

[35810](https://github.com/flutter/flutter/pull/35810) SliverFillRemaining accounts for child size when hasScrollBody is false

[35941](https://github.com/flutter/flutter/pull/35941) SliverLayoutBuilder


## 引擎

核心引擎在本版本中持續於各方面獲得大量改進。

[9041](https://github.com/flutter/engine/pull/9041) TextStyle.height property as a multiple of font size instead of multiple of ascent+descent+leading.

[9089](https://github.com/flutter/engine/pull/9089) Wire up custom event loop interop for the GLFW embedder.

[9329](https://github.com/flutter/engine/pull/9329) Fixed memory leak by way of accidental retain on implicit self

[9403](https://github.com/flutter/engine/pull/9403) Remove variants of ParagraphBuilder::AddText that are not used within the engine

[9419](https://github.com/flutter/engine/pull/9419) Has a binary messenger

[9423](https://github.com/flutter/engine/pull/9423) Don't hang to a platform view's input connection after it's disposed

[9424](https://github.com/flutter/engine/pull/9424) Send timings of the first frame without batching

[9431](https://github.com/flutter/engine/pull/9431) Generate weak pointers only in the platform thread

[9436](https://github.com/flutter/engine/pull/9436) Add the functionality to merge and unmerge MessageLoopTaskQueues

[9439](https://github.com/flutter/engine/pull/9439) Eliminate unused import in FlutterView

[9452](https://github.com/flutter/engine/pull/9452) Convert RRect.scaleRadii to public method

[9456](https://github.com/flutter/engine/pull/9456) Made sure that the run_tests script returns the right error code.

[9459](https://github.com/flutter/engine/pull/9459) Remove unused/unimplemented shell constructor

[9460](https://github.com/flutter/engine/pull/9460) Fixed logLevel filter bug so that filter now works as expected.

[9461](https://github.com/flutter/engine/pull/9461) Adds API for retaining intermediate engine layers

[9463](https://github.com/flutter/engine/pull/9463) Removed unused imports in new embedding.

[9466](https://github.com/flutter/engine/pull/9466) Re-enable the Wuffs GIF decoder

[9468](https://github.com/flutter/engine/pull/9468) Manually draw remainder curve for wavy decorations

[9485](https://github.com/flutter/engine/pull/9485) Add --observatory-host switch

[9486](https://github.com/flutter/engine/pull/9486) Rework image & texture management to use concurrent message queues.

[9489](https://github.com/flutter/engine/pull/9489) Handle ambiguous directionality of final trailing whitespace in mixed bidi text

[9490](https://github.com/flutter/engine/pull/9490) fix a bug where the platform view's transform is not reset before set frame

[9493](https://github.com/flutter/engine/pull/9493) Run benchmarks on try jobs.

[9495](https://github.com/flutter/engine/pull/9495) fix build breakage on [PlatformViews.mm](http://platformviews.mm/)

[9498](https://github.com/flutter/engine/pull/9498) Notify framework to clear input connection when app is backgrounded (#35054).

[9503](https://github.com/flutter/engine/pull/9503) Improve caching limits for Skia

[9506](https://github.com/flutter/engine/pull/9506) Synchronize main thread and gpu thread for first render frame

[9508](https://github.com/flutter/engine/pull/9508) Support image filter on paint

[9532](https://github.com/flutter/engine/pull/9532) fix FlutterOverlayView doesn't remove from superview in some cases

[9556](https://github.com/flutter/engine/pull/9556) Minimal integration with the Skia text shaper module

[9561](https://github.com/flutter/engine/pull/9561) libtxt: fix reference counting of SkFontStyleSets held by font asset providers

[9585](https://github.com/flutter/engine/pull/9585) Fix a race in the embedder accessibility unit test

[9589](https://github.com/flutter/engine/pull/9589) Fixes a plugin overwrite bug in the plugin shim system.

[9590](https://github.com/flutter/engine/pull/9590) Apply patches that have landed in topaz since we ported the runners to the engine repo

[9591](https://github.com/flutter/engine/pull/9591) Document various classes in //flutter/shell/common.

[9632](https://github.com/flutter/engine/pull/9632) Added Doxyfile.

[9633](https://github.com/flutter/engine/pull/9633) Cherry-pick fix for flutter/flutter#35291

[9640](https://github.com/flutter/engine/pull/9640) make EmbeddedViewParams a unique ptr

[9642](https://github.com/flutter/engine/pull/9642) Fix warning about settings unavailable GN arg build_glfw_shell

[9651](https://github.com/flutter/engine/pull/9651) Move the mutators stack handling to preroll

[9652](https://github.com/flutter/engine/pull/9652) Pipeline allows continuations that can produce to front

[9653](https://github.com/flutter/engine/pull/9653) External view embedder can tell if embedded views have mutated

[9655](https://github.com/flutter/engine/pull/9655) Allow embedders to add callbacks for responses to platform messages from the framework.

[9660](https://github.com/flutter/engine/pull/9660) ExternalViewEmbedder can CancelFrame after pre-roll

[9661](https://github.com/flutter/engine/pull/9661) Raster now returns an enum rather than boolean

[9663](https://github.com/flutter/engine/pull/9663) Mutators Stack refactoring

[9685](https://github.com/flutter/engine/pull/9685) fix Picture.toImage return type check and api conform test.

[9698](https://github.com/flutter/engine/pull/9698) Ensure that platform messages without response handles can be dispatched.

[9713](https://github.com/flutter/engine/pull/9713) Explain why OpacityLayer has an offset field

[9717](https://github.com/flutter/engine/pull/9717) Fixed logLevel filter bug so that filter now works as expected. (#9460)

[9721](https://github.com/flutter/engine/pull/9721) Add comments to differentiate two cache paths

[9725](https://github.com/flutter/engine/pull/9725) Make the license script compatible with recently changed Dart I/O stream APIs

[9727](https://github.com/flutter/engine/pull/9727) Add hooks for InputConnection lock and unlocking

[9734](https://github.com/flutter/engine/pull/9734) Fix backspace crash on Chinese devices

[9737](https://github.com/flutter/engine/pull/9737) Use libc++ variant of string view and remove the FML variant.

[9741](https://github.com/flutter/engine/pull/9741) Make FLEViewController's view an internal detail

[9747](https://github.com/flutter/engine/pull/9747) Remove get engine

[9750](https://github.com/flutter/engine/pull/9750) FLEViewController/Engine API changes

[9758](https://github.com/flutter/engine/pull/9758) Include SkParagraph headers only when the enable-skshaper flag is on

[9762](https://github.com/flutter/engine/pull/9762) Fall back to a fully qualified path to [libapp.so](http://libapp.so/) if the library can not be loaded by name

[9767](https://github.com/flutter/engine/pull/9767) Un-deprecated FlutterViewController's binaryMessenger.

[9769](https://github.com/flutter/engine/pull/9769) Document //flutter/shell/common/engine.

[9772](https://github.com/flutter/engine/pull/9772) fix objcdoc generation

[9781](https://github.com/flutter/engine/pull/9781) SendPlatformMessage allow null message value

[9797](https://github.com/flutter/engine/pull/9797) Remove breaking asserts

[9808](https://github.com/flutter/engine/pull/9808) Document FontFeature class

[9809](https://github.com/flutter/engine/pull/9809) Document //flutter/shell/common/rasterizer

[9813](https://github.com/flutter/engine/pull/9813) Made Picture::toImage happen on the IO thread with no need for an onscreen surface.

[9815](https://github.com/flutter/engine/pull/9815) Made the persistent cache's directory a const pointer.

[9816](https://github.com/flutter/engine/pull/9816) Only release the image data in the unit-test once Skia has accepted ownership of it.

[9825](https://github.com/flutter/engine/pull/9825) In a single frame codec, release the encoded image buffer after giving it to the decoder

[9828](https://github.com/flutter/engine/pull/9828) Make the virtual display's window translucent

[9847](https://github.com/flutter/engine/pull/9847) Started adding the engine hash to frameworks' Info.plist.

[9849](https://github.com/flutter/engine/pull/9849) Preserve the alpha for VD content by setting a transparent background.

[9850](https://github.com/flutter/engine/pull/9850) Add multi-line flag to semantics

[9851](https://github.com/flutter/engine/pull/9851) Add a macro for prefixing embedder.h symbols

[9855](https://github.com/flutter/engine/pull/9855) Fix missing assignment to _allowHeadlessExecution

[9859](https://github.com/flutter/engine/pull/9859) Fix justify for RTL paragraphs.

[9867](https://github.com/flutter/engine/pull/9867) Fixed error in generated xml Info.plist.

[9873](https://github.com/flutter/engine/pull/9873) Add clang version to Info.plist

[9875](https://github.com/flutter/engine/pull/9875) Simplify buildtools

[9890](https://github.com/flutter/engine/pull/9890) Log dlopen errors only in debug mode

[9893](https://github.com/flutter/engine/pull/9893) Removed logic from FlutterAppDelegate into FlutterPluginAppLifeCycleDelegate

[9894](https://github.com/flutter/engine/pull/9894) Add the isMultiline semantics flag to values

[9896](https://github.com/flutter/engine/pull/9896) Capture stderr for ninja command

[9901](https://github.com/flutter/engine/pull/9901) Handle decompressed images in InstantiateImageCodec

[9905](https://github.com/flutter/engine/pull/9905) Respect EXIF information while decompressing images.

[9906](https://github.com/flutter/engine/pull/9906) Update libcxx & libcxxabi to HEAD in prep for compiler upgrade.

[9919](https://github.com/flutter/engine/pull/9919) Removed unused method.

[9920](https://github.com/flutter/engine/pull/9920) Fix caching of Locale.toString

[9922](https://github.com/flutter/engine/pull/9922) Split out lifecycle protocol

[9923](https://github.com/flutter/engine/pull/9923) Fix failure of the onReportTimings window hook test

[9924](https://github.com/flutter/engine/pull/9924) Don't try to use unset assets_dir setting

[9925](https://github.com/flutter/engine/pull/9925) Fix the geometry test to reflect that OffsetBase comparison operators are a partial ordering

[9927](https://github.com/flutter/engine/pull/9927) Update Buildroot Version

[9929](https://github.com/flutter/engine/pull/9929) Update the exception thrown for invalid data in the codec test

[9931](https://github.com/flutter/engine/pull/9931) Fix reentrancy handling in SingleFrameCodec

[9932](https://github.com/flutter/engine/pull/9932) Exit flutter_tester with an error code on an unhandled exception

[9934](https://github.com/flutter/engine/pull/9934) Updates to the engine test runner script

[9935](https://github.com/flutter/engine/pull/9935) Fix backspace crash on Chinese devices (#9734)

[9936](https://github.com/flutter/engine/pull/9936) Move development.key from buildroot

[9937](https://github.com/flutter/engine/pull/9937) [platform view] do not make clipping view and interceptor view clipToBounds

[9938](https://github.com/flutter/engine/pull/9938) Removed PlatformViewsController if-statements from TextInputPlugin (#34286).

[9939](https://github.com/flutter/engine/pull/9939) Added hasRenderedFirstFrame() to old FlutterView for Espresso (#36211).

[9948](https://github.com/flutter/engine/pull/9948) [glfw] Enables replies on binary messenger in glfw embedder

[9958](https://github.com/flutter/engine/pull/9958) Clean up cirrus.yml file a little

[9961](https://github.com/flutter/engine/pull/9961) Fix return type of assert function in gradient_test

[9977](https://github.com/flutter/engine/pull/9977) Fix flutter/flutter #34791

[9987](https://github.com/flutter/engine/pull/9987) Update GN to git_revision:152c5144ceed9592c20f0c8fd55769646077569b

[10012](https://github.com/flutter/engine/pull/10012) Undelete used method

[10021](https://github.com/flutter/engine/pull/10021) Added a DartExecutor API for querying ## of pending channel callbacks

[10056](https://github.com/flutter/engine/pull/10056) Update .cirrus.yml

[10063](https://github.com/flutter/engine/pull/10063) Track clusters and return cluster boundaries in getGlyphPositionForCoordinates (emoji fix)

[10064](https://github.com/flutter/engine/pull/10064) Disable DartLifecycleTest::ShuttingDownTheVMShutsDownAllIsolates in runtime_unittests.

[10068](https://github.com/flutter/engine/pull/10068) Fixed memory leak with engine registrars.

[10069](https://github.com/flutter/engine/pull/10069) Enable consts from environment in DDK for flutter_web

[10073](https://github.com/flutter/engine/pull/10073) Basic structure for flutter_jit_runner far

[10074](https://github.com/flutter/engine/pull/10074) Change ParagraphBuilder to replace the parent style's font families with the child style's font families

[10075](https://github.com/flutter/engine/pull/10075) Change flutter runner target for LUCI

[10078](https://github.com/flutter/engine/pull/10078) One more luci fix

[10109](https://github.com/flutter/engine/pull/10109) Cache font family lookups that fail to obtain a font collection

[10127](https://github.com/flutter/engine/pull/10127) Track detailed LibTxt metrics

[10128](https://github.com/flutter/engine/pull/10128) Started linking the test targets against Flutter.

[10151](https://github.com/flutter/engine/pull/10151) [fucshia] fix name to reflect the cmx file

[10155](https://github.com/flutter/engine/pull/10155) src/third_party/dart a2aec5eb06...86dba81dec

[10172](https://github.com/flutter/engine/pull/10172) [dart_runner] Rename dart to dart runner

[10176](https://github.com/flutter/engine/pull/10176) Add suggested Java changes from flutter roll

[10178](https://github.com/flutter/engine/pull/10178) Removed unnecessary call to find the App.framework.

[10179](https://github.com/flutter/engine/pull/10179) [dart_runner] dart jit runner and dart jit product runner

[10195](https://github.com/flutter/engine/pull/10195) Allow embedder controlled composition of Flutter layers.

[10235](https://github.com/flutter/engine/pull/10235) Deprecate FlutterView#enableTransparentBackground

[10242](https://github.com/flutter/engine/pull/10242) Remove Dead Scenic Clipping Code Path.

[10265](https://github.com/flutter/engine/pull/10265) [dart-roll] Roll dart sdk to 80c4954d4d1d2a257005793d83b601f3ff2997a2

[10273](https://github.com/flutter/engine/pull/10273) Remove one last final call to AddPart()

[10282](https://github.com/flutter/engine/pull/10282) Export FFI from sky_engine.

[10295](https://github.com/flutter/engine/pull/10295) Fix memory overrun in minikin patch

[10296](https://github.com/flutter/engine/pull/10296) fix CI

[10297](https://github.com/flutter/engine/pull/10297) Ensure that the SingleFrameCodec stays alive until the ImageDecoder invokes its callback

[10298](https://github.com/flutter/engine/pull/10298) Fix red build again

[10303](https://github.com/flutter/engine/pull/10303) Make tree green for real this time, I promise.

[10414](https://github.com/flutter/engine/pull/10414) expose max depth on Window

[10419](https://github.com/flutter/engine/pull/10419) Make kernel compiler use host toolchain

[10423](https://github.com/flutter/engine/pull/10423) Fix mac gen_snapshot uploader

[10430](https://github.com/flutter/engine/pull/10430) Add copy_gen_snapshots.py tool

[10477](https://github.com/flutter/engine/pull/10477) Add #else, #endif condition comments

[10479](https://github.com/flutter/engine/pull/10479) Delete unused create_macos_gen_snapshot.py script

[10485](https://github.com/flutter/engine/pull/10485) Remove semi-redundant try-jobs.

[10629](https://github.com/flutter/engine/pull/10629) Fix engine platformviewscontroller leak

[10637](https://github.com/flutter/engine/pull/10637) Document the thread test fixture.

[10644](https://github.com/flutter/engine/pull/10644) [flutter_runner] Port: Add connectToService, wrapping fdio_ns_connect.

[10652](https://github.com/flutter/engine/pull/10652) Allow embedders to control Dart VM lifecycle on engine shutdown.

[10674](https://github.com/flutter/engine/pull/10674) When setting up AOT snapshots from symbol references, make buffer sizes optional.

[10675](https://github.com/flutter/engine/pull/10675) Improvements to the flutter GDB script

[10773](https://github.com/flutter/engine/pull/10773) Remove use of the deprecated AccessibilityNodeInfo boundsInParent API

[10776](https://github.com/flutter/engine/pull/10776) rename stub_ui to web_ui

[10780](https://github.com/flutter/engine/pull/10780) [flutter_runner] Improve frame scheduling

[10781](https://github.com/flutter/engine/pull/10781) [flutter] Create the compositor context on the GPU task runner.

[10782](https://github.com/flutter/engine/pull/10782) Update license script to handle ANGLE

[10783](https://github.com/flutter/engine/pull/10783) Make firebase test more LUCI friendly

[10786](https://github.com/flutter/engine/pull/10786) Remove 3 semi-redundant try-jobs

[10787](https://github.com/flutter/engine/pull/10787) Change call to |AddPart| to |AddChild|

[10788](https://github.com/flutter/engine/pull/10788) Wire up a concurrent message loop backed SkExecutor for Skia.

[10797](https://github.com/flutter/engine/pull/10797) Rename artifacts so they match the Maven convention

[10799](https://github.com/flutter/engine/pull/10799) Add a test for creating images from bytes.

[10808](https://github.com/flutter/engine/pull/10808) Remove flutter_kernel_sdk dart script

[10809](https://github.com/flutter/engine/pull/10809) [dart:zircon] Porting Cache re-usable handle wait objects

[10815](https://github.com/flutter/engine/pull/10815) Return an empty mapping for an empty file asset

[10816](https://github.com/flutter/engine/pull/10816) Add firstFrameDidRender to FlutterViewController

[10823](https://github.com/flutter/engine/pull/10823) Expose isolateId for engine

[10941](https://github.com/flutter/engine/pull/10941) Report test failures in run_tests.py

[10952](https://github.com/flutter/engine/pull/10952) Change SemanticsNode#children lists to be non-null

[10955](https://github.com/flutter/engine/pull/10955) Fix format

[10956](https://github.com/flutter/engine/pull/10956) Increase the license block scan from 5k to 6k

[11002](https://github.com/flutter/engine/pull/11002) Remove a tracing macro with a dangling pointer

[11004](https://github.com/flutter/engine/pull/11004) Trace RasterCacheResult::Draw

[11005](https://github.com/flutter/engine/pull/11005) Drop firebase test from Cirrus

[11007](https://github.com/flutter/engine/pull/11007) Update [README.md](http://readme.md/)

[11011](https://github.com/flutter/engine/pull/11011) Initialize the engine in the running state to match the animator's default state

[11012](https://github.com/flutter/engine/pull/11012) Remove the ParagraphImpl class from the text API

[11013](https://github.com/flutter/engine/pull/11013) Remove ability to override mac_sdk_path in flutter/tools/gn

[11024](https://github.com/flutter/engine/pull/11024) Add _glfw versions of the GLFW desktop libraries

[11027](https://github.com/flutter/engine/pull/11027) Fix first frame logic

[11029](https://github.com/flutter/engine/pull/11029) Disable a deprecation warning for use of a TaskDescription constructor for older platforms

[11033](https://github.com/flutter/engine/pull/11033) remove OS version

[11034](https://github.com/flutter/engine/pull/11034) Show all license diffs

[11038](https://github.com/flutter/engine/pull/11038) Make JIT work on iPhone armv7

[11040](https://github.com/flutter/engine/pull/11040) Hide verbose dart snapshot during run_test.py

[11041](https://github.com/flutter/engine/pull/11041) Add a BroadcastStream to FrameTiming

[11046](https://github.com/flutter/engine/pull/11046) Add ccls config files to .gitignore

[11052](https://github.com/flutter/engine/pull/11052) Remove unused dstColorSpace argument to MakeCrossContextFromPixmap

[11056](https://github.com/flutter/engine/pull/11056) Sort the Skia typefaces in a font style set into a consistent order

[11062](https://github.com/flutter/engine/pull/11062) Provide a placeholder queue ID for the custom embedder task runner.

[11067](https://github.com/flutter/engine/pull/11067) Minor update to the Robolectric test harness

[11068](https://github.com/flutter/engine/pull/11068) More updates to the Robolectric test harness

[11075](https://github.com/flutter/engine/pull/11075) [dynamic_thread_merging] Resubmit only on the frame where the merge


## 工具

一如既往，Flutter 的端對端體驗高度依賴其工具鏈。有鑑於此，除了下方聚焦於 flutter CLI 工具的 PR 之外，您也應該查閱以下 IntelliJ/Android Studio Flutter 插件、VSCode Flutter 插件及 Dart DevTools 的發行版：



*   [DevTools 0.1.6 Release Notes](https://groups.google.com/forum/#!topic/flutter-announce/x9eiBq-OZUk) - Sept 5, 2019
*   [IntelliJ Plugin M39 Release Notes](https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/flutter-announce/HH2-z-wYMH4/Yb1mzIPWBgAJ) - Sept 3, 2019
*   [VSCode Plugin v3.4](https://dartcode.org/releases/v3-4/) - Sept 3, 2019
*   [DevTools 0.1.5 Release Notes](https://groups.google.com/forum/#!searchin/flutter-announce/release$20notes|sort:date/flutter-announce/_tBeov94GEk/8IMoZnV0DQAJ) - Aug 5, 2019
*   [VSCode Plugin v3.3](https://dartcode.org/releases/v3-3/) - Aug 2, 2019
*   [IntelliJ Plugin M38 Release Notes](https://groups.google.com/forum/#!searchin/flutter-announce/intellij|sort:date/flutter-announce/-LQPz3C3JAM/ZR2WnOklEQAJ) - Aug 2, 2019
*   [DevTools 0.1.4 Release Notes](https://groups.google.com/forum/#!searchin/flutter-announce/release$20notes|sort:date/flutter-announce/ZUcqjzEDTKc/ABZtXXOpCgAJ) - Jul 19, 2019
*   [VSCode Plugin v3.2](https://dartcode.org/releases/v3-2/) - Jun 28, 2019

In addition, this release also has a lot going on under the hood to provide you with better, more actionable error messages. You can read about those details in [this blog post](https://blog.flutter.dev/improving-flutters-error-messages-e098513cecf9) from the Flutter User Experience team.

[32511](https://github.com/flutter/flutter/pull/32511) Rendering errors with root causes in the widget layer should have a reference to the widget

[28090](https://github.com/flutter/flutter/pull/28090) Ensure that cache dirs and files have appropriate permissions

[32816](https://github.com/flutter/flutter/pull/32816) Add initial implementation of flutter assemble

[34624](https://github.com/flutter/flutter/pull/34624) Break down flutter doctor validations and results

[34785](https://github.com/flutter/flutter/pull/34785) Tweak the display name of emulators

[34794](https://github.com/flutter/flutter/pull/34794) Add emulatorID field to devices in daemon

[35084](https://github.com/flutter/flutter/pull/35084) Move findTargetDevices to DeviceManager

[35092](https://github.com/flutter/flutter/pull/35092) Add FlutterProjectFactory so that it can be overridden internally.

[35186](https://github.com/flutter/flutter/pull/35186) Make tool coverage collection resilient to sentinel coverage data

[35188](https://github.com/flutter/flutter/pull/35188) ensure test isolate is paused before collecting coverage

[35192](https://github.com/flutter/flutter/pull/35192) don't block any presubmit on coverage

[35231](https://github.com/flutter/flutter/pull/35231) Fix coverage collection

[35367](https://github.com/flutter/flutter/pull/35367) Add type to StreamChannel in generated test code.

[35392](https://github.com/flutter/flutter/pull/35392) Add timer checking and Fake http client to testbed

[35406](https://github.com/flutter/flutter/pull/35406) Refactor signal and command line handler from resident runner

[35465](https://github.com/flutter/flutter/pull/35465) Mark update-packages as non-experimental

[35467](https://github.com/flutter/flutter/pull/35467) Mark update-packages as non-experimental

[35480](https://github.com/flutter/flutter/pull/35480) Update the help message on precache command for less confusion

[35681](https://github.com/flutter/flutter/pull/35681) Disable incremental compiler in dartdevc

[35765](https://github.com/flutter/flutter/pull/35765) Use public _registerService RPC in flutter_tools

[35767](https://github.com/flutter/flutter/pull/35767) set targets of zero percent for tools codecoverage

[35839](https://github.com/flutter/flutter/pull/35839) use pub run for create test and remove [INFO] logs

[35846](https://github.com/flutter/flutter/pull/35846) move reload and restart handling into terminal

[36017](https://github.com/flutter/flutter/pull/36017) Move reporting files to reporting/

[36082](https://github.com/flutter/flutter/pull/36082) Add better handling of JSON-RPC exception

[36084](https://github.com/flutter/flutter/pull/36084) handle google3 version of pb

[36105](https://github.com/flutter/flutter/pull/36105) [flutter_tool] Catch a yaml parse failure during project creation

[36109](https://github.com/flutter/flutter/pull/36109) Catch exceptions thrown by runChecked* when possible

[36122](https://github.com/flutter/flutter/pull/36122) Make sure add-to-app build bundle from outer xcodebuild/gradlew sends analytics

[36138](https://github.com/flutter/flutter/pull/36138) Implement feature flag system for flutter tools

[36199](https://github.com/flutter/flutter/pull/36199) Don't try to flutterExit if isolate is still paused

[36208](https://github.com/flutter/flutter/pull/36208) [flutter_tool] Allow analytics without a terminal attached

[36213](https://github.com/flutter/flutter/pull/36213) Use DeviceManager instead of device to determine if device supports project.

[36218](https://github.com/flutter/flutter/pull/36218) release lock in flutter pub context

[36237](https://github.com/flutter/flutter/pull/36237) Recommend to use the final version of CDN support for the trunk specs repo.

[36240](https://github.com/flutter/flutter/pull/36240) Rearrange flutter assemble implementation

[36288](https://github.com/flutter/flutter/pull/36288) Throw exception if instantiating IOSDevice on non-mac os platform

[36289](https://github.com/flutter/flutter/pull/36289) FakeHttpClientResponse improvements

[36318](https://github.com/flutter/flutter/pull/36318) Include flutter_runner in precache artifacts.

[36327](https://github.com/flutter/flutter/pull/36327) Fix invocations of ideviceinstaller not passing DYLD_LIBRARY_PATH

[36331](https://github.com/flutter/flutter/pull/36331) Minor fixes to precache help text (attempt #2)

[36434](https://github.com/flutter/flutter/pull/36434) Clean up flutter driver device detection.

[36481](https://github.com/flutter/flutter/pull/36481) Remove untested code

[36490](https://github.com/flutter/flutter/pull/36490) [flutter_tool] Send analytics command before the command runs

[36507](https://github.com/flutter/flutter/pull/36507) Bump engine version

[36513](https://github.com/flutter/flutter/pull/36513) Fix flutter pub -v

[36556](https://github.com/flutter/flutter/pull/36556) Fix usage test to use local usage

[36560](https://github.com/flutter/flutter/pull/36560) [flutter_tools] Add some useful commands to the [README.md](http://readme.md/)

[36564](https://github.com/flutter/flutter/pull/36564) Make sure fx flutter attach can find devices

[36569](https://github.com/flutter/flutter/pull/36569) Some minor cleanup for flutter_tools

[36570](https://github.com/flutter/flutter/pull/36570) Some minor fixes to the tool_coverage tool

[36585](https://github.com/flutter/flutter/pull/36585) Place build outputs under dart tool

[36598](https://github.com/flutter/flutter/pull/36598) Expose functionality to compile dart to kernel for the VM

[36679](https://github.com/flutter/flutter/pull/36679) add line-length to flutter format command line

[36727](https://github.com/flutter/flutter/pull/36727) Add missing config to create

[36773](https://github.com/flutter/flutter/pull/36773) Expose build-dir config option

[36774](https://github.com/flutter/flutter/pull/36774) Parameterize CoverageCollector with a library name predicate

[36785](https://github.com/flutter/flutter/pull/36785) [flutter_tool] Clean up usage events and custom dimensions

[36787](https://github.com/flutter/flutter/pull/36787) Check for directory instead of path separator

[36832](https://github.com/flutter/flutter/pull/36832) Remove flaky check for analyzer message.

[37036](https://github.com/flutter/flutter/pull/37036) Build number (part after +) is documented as optional, use entire app version if not present

[37044](https://github.com/flutter/flutter/pull/37044) [flutter_tool] Make a couple file operations synchronous

[37186](https://github.com/flutter/flutter/pull/37186) [flutter_tool] Usage refactor cleanup

[37196](https://github.com/flutter/flutter/pull/37196) [flutter_tool] Catch ProcessException from 'adb devices'

[37198](https://github.com/flutter/flutter/pull/37198) [flutter_tool] Re-try sending the first crash report

[37210](https://github.com/flutter/flutter/pull/37210) do not strip symbols when building profile

[37217](https://github.com/flutter/flutter/pull/37217) hide symbols from spotlight for App.framework

[37331](https://github.com/flutter/flutter/pull/37331) [flutter_tool] Add missing toString()

[37345](https://github.com/flutter/flutter/pull/37345) [flutter_tool] Include the local timezone in analytics timestamp

[37378](https://github.com/flutter/flutter/pull/37378) Disable xcode indexing in CI via COMPILER_INDEX_STORE_ENABLE=NO argument

[37422](https://github.com/flutter/flutter/pull/37422) [flutter_tool] Additional flutter manifest yaml validation

[37440](https://github.com/flutter/flutter/pull/37440) Print message when HttpException is thrown after running flutter run

[37457](https://github.com/flutter/flutter/pull/37457) Find the app bundle when the flavor contains underscores

[37500](https://github.com/flutter/flutter/pull/37500) Avoid killing Flutter tool process (#37471)

[37512](https://github.com/flutter/flutter/pull/37512) Enable track widget creation on debug builds

[37514](https://github.com/flutter/flutter/pull/37514) [flutter_tool] Remove unintended analytics screen send

[37521](https://github.com/flutter/flutter/pull/37521) have xcodeSelectPath also catch ArgumentError

[37595](https://github.com/flutter/flutter/pull/37595) Closes #37593 Add flutter_export_environment.sh to gitignore

[37654](https://github.com/flutter/flutter/pull/37654) Add missing library to flutter tools [BUILD.gn](http://build.gn/)

[37731](https://github.com/flutter/flutter/pull/37731) Add metadata to indicate if the host app contains a Flutter module

[37735](https://github.com/flutter/flutter/pull/37735) Remove unused no-build flag from the flutter run command

[37743](https://github.com/flutter/flutter/pull/37743) Handle thrown maps and rejects from fe server

[37792](https://github.com/flutter/flutter/pull/37792) Disable the progress bar when downloading the Dart SDK via Invoke-WebRequest

[37863](https://github.com/flutter/flutter/pull/37863) Expose the timeline event names so they can be used in other systems that do tracing

[37871](https://github.com/flutter/flutter/pull/37871) Catch failure to create directory in cache

[37900](https://github.com/flutter/flutter/pull/37900) Listen to ExtensionEvent instead of TimelineEvent

[37958](https://github.com/flutter/flutter/pull/37958) Catch FormatException caused by bad simctl output

[37966](https://github.com/flutter/flutter/pull/37966) Remove ephemeral directories during flutter clean

[37994](https://github.com/flutter/flutter/pull/37994) Remove no-constant-update-2018, the underlying issue has been resolved.

[38101](https://github.com/flutter/flutter/pull/38101) Catch filesystem exception from flutter create

[38102](https://github.com/flutter/flutter/pull/38102) Fix type error hidden by implicit downcasts

[38296](https://github.com/flutter/flutter/pull/38296) use common emulator/device list

[38339](https://github.com/flutter/flutter/pull/38339) [flutter_tool] Flip create language defaults to swift and kotlin

[38342](https://github.com/flutter/flutter/pull/38342) remove bsdiff from [BUILD.gn](http://build.gn/)

[38353](https://github.com/flutter/flutter/pull/38353) [flutter_tool] Observatory connection error handling cleanup

[38472](https://github.com/flutter/flutter/pull/38472) [flutter_tool] Fix bug in manifest yaml validation

[38486](https://github.com/flutter/flutter/pull/38486) Catch errors thrown into the Zone by json_rpc

[38490](https://github.com/flutter/flutter/pull/38490) Fix publish cmd

[38497](https://github.com/flutter/flutter/pull/38497) handle unexpected exit from frontend server

[38575](https://github.com/flutter/flutter/pull/38575) fix rpc exception for real

[38586](https://github.com/flutter/flutter/pull/38586) Don't reload if compilation has errors

[38637](https://github.com/flutter/flutter/pull/38637) [flutter_tool] Throw tool exit on malformed storage url override

[38652](https://github.com/flutter/flutter/pull/38652) Kill dead code

[36860](https://github.com/flutter/flutter/pull/36860) Remove Chain terse parsing

[36874](https://github.com/flutter/flutter/pull/36874) Adjust phrasing of features

[36884](https://github.com/flutter/flutter/pull/36884) Unbreak build_runner


## 完整 PR 清單

您可以在[此處](/release/release-notes/changelogs/changelog-1.9.1)查看本版本所有已合併 PR 的完整清單。

