Flutter 1.12.13 发行说明

Welcome to Flutter 1.12, our biggest stable release so far! In this release, we’ve merged 1,905 Pull Requests from 188 contributors, including both Googlers and non-Google contributors! Please see the chart below for the number of PRs in each release. Over the past year, the number of PRs has been growing in each release (except for Flutter 1.9, which wais an out-of-band release to support Catalina). In the recent Github Octoverse report, Flutter is listed as one of the top 3 active repos on Github!

As the holiday season is upon us, we would like to express our sincerest appreciation to our amazing developer community who believe in Flutter, advocate for Flutter, and contribute to Flutter. It’s been an incredible year for us all! We look forward to working with you in the years to come.

As always, you can find interesting PRs listed below. And there are lots of interesting things to mention in this release, including:

  • Some breaking API changes
  • Some severe issues caught and fixed
  • Web support is now available in the beta channel
  • MacOS support is enabled in the dev channel as of 1.13
  • Improved SDK to add Flutter to existing Android/iOS apps
  • iOS 13 visual refresh including the support for iOS Dark mode
  • Enhanced tooling experiences
  • New widgets and features
  • And more!

Breaking changes

In general, we want to avoid introducing breaking changes to Flutter, our plugins, or our packages. However, sometimes it is inevitable when we need to make our APIs more intuitive. We have implemented a new process that invites you to submit tests to help us detect breaking changes; see this post to flutter-announce and our breaking change policy on our wiki.

The following list includes breaking changes in this release. Please see the related announcements so that you can move forward with your code.

37024 Implement PageView using SliverLayoutBuilder, Deprecate RenderSliverFillViewport

37739 Fix AnimationStatus for repeat(reverse: true) and animateWith

37896 Add opacity control to MouseRegion. Add findAnnotations to Layer.

38481 Timer picker fidelity revision

38568 Normalize assert checking of clipBehavior

39079 fix widget built twice during warm up frame

39440 Allow gaps in the initial route

39919 CupertinoDatePicker & CupertinoTimerPicker dark mode

40166 Added proper focus handling when pushing and popping routes

40179 Update PopupMenu layout

40566 Remove CupertinoSystemColors in favor of CupertinoColors

40690 CupertinoPageScaffold dark mode

41220 Add an ActivateAction to controls that use InkWell.

41857 Change the dark theme elevation overlay to use the colorScheme.onSurface

42449 Increase TextField’s minimum height from 40 to 48

42470 No multiline password fields

42479 Make DropdownButton’s disabledHint and hint behavior consistent

45135 Add option to delay rendering the first frame

Severe crash & performance bugs

In every stable release, we make an effort to improve the quality of Flutter. In 1.12, we fixed several severe issues; this includes the following crashes and performance issues.

40009 Add null check to _IndicatorPainter._tabOffsetsEqual() to prevent crash

40263 Fix crash on vswhere search from flutter doctor

40786 Fix crash on vswhere query on missing installations

42342 Fix DropdownButton crash when hint and selectedItemBuilder are simultaneously defined

44610 Error Message for createState assertion

38814 Add iOS backdrop filter benchmarks

38821 Cache caret parameters

38861 Replace deprecated onReportTimings w/ frameTimings

39439 Measure iOS CPU/GPU percentage

43676 Allow multiple TimingsCallbacks

45050 Add a perf test for picture raster cache

New features

Flutter 1.12 introduces several new features including the SliverOpacity widget, the SliverAnimatedList, and the ability to configure a stretch effect for a SliverAppBar.

37416 Add MediaQuery.systemGestureInsets to support Android Q

39857 Update ToggleButtons constraints default and add new constraints parameter

40161 Add fullscreenDialog argument in PageRouteBuilder

40461 Implement DropdownButton.selectedItemBuilder

41415 Expose API for resizing image caches

42250 SliverAppBar - Configurable overscroll stretch with callback feature & FlexibleSpaceBar support

42485 Re-landing SliverAnimatedList.

42842 Add “navigator” option to “showDialog” and “showGeneralDialog”

43286 FadeInImage cacheWidth and cacheHeight support

44289 SliverOpacity

45127 SliverIgnorePointer

45432 Use RenderSliverPadding to inset SliverFillViewport

iOS support

iOS continues to be a big investment area for Flutter. With this release, we’ve made a visual refresh to our Cupertino library to match the iOS 13 look. We now support dark mode in the Cupertino widgets, added two new widgets called CupertinoContextMenu and CupertinoSlidingSegmentedControl, and made improvements to segmented control widgets, CupertinoAlertDialog, and CupertinoDatePicker.

36871 Audit use of defaultTargetPlatform

37719 CupertinoDynamicColor and friends

38712 Show process error when iOS install fails

39056 Fixed issues with Background Color #34741

39215 CupertinoActionSheet dark mode & fidelity

39289 CupertinoActivityIndicator & CupertinoApp dark mode

39430 make CupertinoDynamicColor const constructible

39463 Update validation to support Xcode11 version

39585 remove fallback code for ios/usb artifacts

39590 Fix user gesture in CupertinoPageRoute

39765 CupertinoButton & Bottom tab bar dark mode

39927 Make CupertinoDynamicColor.resolve return null when given a null color

40007 CupertinoAlertDialog dark mode & CupertinoActionSheet fidelity

40100 Fix a problem with disposing of focus nodes in tab scaffold

40189 Dark mode CupertinoNavigationBar

40447 Implement mdns for flutter run

40454 Dark Mode R: Refresh Control

40466 ModalRoutes ignore input when a (cupertino) pop transition is underway

40864 Move iOS and Android gitignore rules into folders

41326 Exception when selecting in TextField

41355 fix bad indentations(mainly around collection literals)

41384 [flutter_tools] Report iOS mDNS lookup failures to analytics

41431 Cupertino { TabScafold, TextSelection, TextField } dark mode & minor fidelity update

41473 Missing trailing commas

41482 [flutter_tool] Add analytics events for ios-mdns fallback success/failure

41644 indent formal parameters correctly

41799 Improved ios 13 scrollbar fidelity

41828 Set DEFINES_MODULE=YES in plugin templates

41892 Fix CupertinoActivityIndicator radius

42025 Localization refresh

42032 Update CupertinoActivityIndicator colors and gradient

42533 Disable arrow key focus navigation for text fields

42550 Add enableSuggestions flag to TextField and TextFormField

42563 Adding thumb color customisation functionality to CupertinoSlider

42602 Properly throw FlutterError when route builder returns null on CupertinoPageRoute

42775 CupertinoSlidingSegmentedControl

42790 This disables the up/down arrow focus navigation in text fields in a different way.

42924 CupertinoDialogAction is missing super call

42964 Use PRODUCT_BUNDLE_IDENTIFIER from buildSettings to find correct bundle id on iOS when using flavors

42967 Pad CupertinoAlertDialog with MediaQuery viewInsets

43918 CupertinoContextMenu (iOS 13)

43932 Update CupertinoSlidingSegmentedControl control/feedback mechanism

44149 Apply minimumDate & maximumDate constraints in CupertinoDatePicker date mode

44391 Segmented control quick double tap fix

44551 Remove new unused elements

44743 Sort Localization generation output

44870 Add -runFirstLaunch hint text

45124 Analyze dartpad

11350 Firebase test for Platform Views on iOS

11390 preventDefault on touchend to show iOS keyboard

11413 Ios simulator unittests seem to not consider the full compilation unit

11530 Optionally strip bitcode when creating ios framework

11652 iOS platform view mutation XCUITests

11802 Adjust iOS frame start times to match the platform info

11807 Fix deleting Thai vowel bug on iOS

11817 Smooth out iOS irregular input events delivery

11886 remove extra redundant channels setup in iOS embedding engine

12078 Manage iOS contexts separately

12084 Guard availability of user notification related methods to iOS 10.0

12192 Updating text field location in IOS as a pre-work for spellcheck

12295 Issue 13238: on iOS, force an orientation change when the current orientation is not allowed

12404 Support accessibility labels on iOS switches.

12990 Fix for a11y crash on iOS

13029 Minimal test harness for iOS

13051 Don’t bump iOS deployment target for Metal builds.

13093 iOS Platform View: Fixed overrelease of the observer.

13170 Issue 13238: on iOS, force an orientation change when the current orientation is not allowed

13449 Fix iOS crash when multiple platform views are in the scene

13469 Fix stale platform view gr context on iOS

13651 Fixed the scroll direction for iOS horizontal accessibility scroll events.

13852 Do not default to downstream affinity on iOS insertText

13857 Guard against orphaned semantic objects from referencing dead accessibility bridge on iOS

1370 [camera] Pause/resume video recording for Android & iOS

1999 [Connectivity] add a method to request location on iOS (for iOS 13)

2052 [instrumentation_adapter] Add stub iOS implementation and example app

2068 [google_maps_flutter] Fix iOS MyLocationButton on iOS

2083 [image_picker] Fix a crash when picking video on iOS 13 and above.

2131 [share]fix iOS crash when setting the subject to null

2139 [google_maps_flutter] Add NonNull macro to reduce warnings in iOS

2191 [image_picker] Fix iOS build and analyzer warnings

2192 [in_app_purchase] Fix iOS build warning

2275 Update cirrus to create IOS simulator on 13.2 an xCode 11

2281 [connectivity] Fix reachability stream for iOS


In this release, we’ve merged a list of changes to support Android 10, including a new activity zoom transition.

37526 catch errors during gradle update

39126 Fid app bundle in Gradle 3.5

39145 Add missing files in the Gradle wrapper directory

39312 let flutter build aar use a local engine

39457 Log flags in build apk and appbundle

40640 Exclude non Android plugins from Gradle build

41698 Download android x64 release artifacts

41933 upload x64 android host release

41935 [Android 10] Activity zoom transition

41946 Do not validate the Android SDK when building an appbundle

42378 remove println from flutter.gradle

42401 Add support for Android x86_64 ABI to Flutter

42508 Add Android x64 profile artifacts

42966 expand scope of rethrown gradle errors

43245 Add smallestScreenSize to android:configChanges in the Android manifest template

43282 implement build aot with assemble for Android target platforms

43876 Refactor flutter.gradle to use assemble directly

44534 Improve performance of build APK (~50%) by running gen_snapshot concurrently

45139 Update Android CPU device detection

11345 [Android] Write MINIMAL_SDK required to use PlatformViews to exception message

11441 Android 10+ View.setSystemGestureExclusionRects

11451 Android 10+ View.getSystemGestureExclusionRects

12085 Enable platform view keyboard input on Android Q

13059 Android targets create final zip artifacts

13099 NO_SUGGESTIONS keyboard flag in Android

13262 Added Semantic header support on Android.

2003 [video_player] Added formatHint to to override video format on Android

2029 fix android crash when pausing or resuming video on APIs lower than 24.

2049 [path_provider] Android: Support multiple external storage options

2208 delete all example/android/app/gradle.properties files

2216 [battery]Use android.arch.lifecycle instead of androidx.lifecycle:lifecycle in

2239 [camera] Android: Improve image streaming by creating a request suita…

Add to App feature

We’ve made a significant upgrade to Add-to-App, the feature that allows you to integrate a Flutter module into your Android or iOS app. Can’t wait to try it? Check out the Add-to-App documentation.

41666 Generate projects using the new Android embedding

44369 Flip enable-android-embedding-v2 flag

40810 Re-enable AAR plugins when an AndroidX failure occurred

41820 Added SystemNavigator.pop “animated” argument.

12752 Enabled people to chose if SystemNavigator.pop is animated on iOS.

12069 Fold the calls for FlutterMain into the FlutterEngine constructor

39945 added new lifecycle state

11913 Added new lifecycle enum

45115 fix ios_add2app_life_cycle license

45133 reland add lifecycle enum and fix the scheduleforcedframe

45430 Drops detached message until we can handle it properly

9525 Android Embedding Refactor PR36: Add splash screen support.

9506 Synchronize main thread and gpu thread for first render frame

39600 Let Material BackButton have a custom onPressed handler

9952 ios: Fixed the callback for the first frame so that it isn’t predicated on having a splash screen.

10145 Added integration test that tests that the first frame callback is called

42708 Test the Android embedding v2

43221 Migrate examples to the Android embedding v2

9895 Android Embedding PR37: Separated FlutterActivity and FlutterFragment via FlutterActivityAndFragmentDelegate

11890 Add some AppLifecycleTests

12128 Make iOS FlutterViewController stop sending inactive/pause on app lifecycle events when not visible

12232 FlutterViewController notify will dealloc

13280 Android embedding API updates for plugin ecosystem

13349 Deprecated DartExecutor as BinaryMessenger and added a getBinaryMessenger() method. (#43202)

13432 Release shim bindings when detaching

2232 [multiple] V2 embedding plugins use compileOnly

1323 [firebase_core][firebase_analytics] Fix bug with transitive lifecycle dependencies

13445 Fizzle onConfigurationChanged if no FlutterView

44499 Show a warning when a module uses a v1 only plugin

35100 Add handling of ‘TextInput.clearClient’ message from platform to framework (#35054).

13474 Request a reattach when creating the text input plugin on Android

43959 Respond to TextInputClient.reattach messages.

509 Force the phone’s screen on before running a test.

11792 Started logging warnings if we drop platform messages.

12167 Channel buffers

40165 Channel buffers

12402 Resize channel buffers

6879 Allow FlutterViewController to be released when not initialized with an engine

9329 Fixed memory leak by way of accidental retain on implicit self

9347 Surrogate binary messenger

9419 Has a binary messenger

8387 Make the resource context primary on iOS

11798 Manage resource and onscreen contexts using separate IOSGLContext objects

12277 Manage resource and onscreen contexts using separate IOSGLContext objects

13396 Made it so we clean up gl resources when view controllers get deleted.

39157 Use new Maven artifacts from Gradle

39503 Remove bitcode=NO from add-to-app flows

36793 Vend Flutter module App.framework as a local CocoaPod pod to be installed by a host app

37966 Remove ephemeral directories during flutter clean

40302 Set DEFINES_MODULE for FlutterPluginRegistrant to generate modulemap

37731 Add metadata to indicate if the host app contains a Flutter module

36805 Allow flavors and custom build types in host app

26630 Move flutter_assets to App.framework

31463 Disable all Dart fingerprinters

35217 Add flutter build aar

40927 Make module pod headers public

44065 Build ios framework

37206 Test that modules built as AAR contain the right assets and artifacts

44127 build aar prints how to consume the artifacts

23782 Add flutter_shared assets to module artifact

22707 Gradle plugin support for adding flutter as subproject to another Android app

9893 Removed logic from FlutterAppDelegate into FlutterPluginAppLifeCycleDelegate

9922 Split out lifecycle protocol

44026 Exit tool if a plugin only supports the embedding v2 but the app doesn’t

44214 Fix v1 embedding support heuristic for plugins

43994 flutter build aar should also build plugins as AARs

13455 Automatically register plugins in FlutterEngine. (#43855)

44011 Move the plugin registrant to io.flutter.plugins and add the @Keep an…

44166 Add v1 plugin register function into v2 plugin template

13394 Remove multiplexed Flutter Android Lifecycle. (#43663)

45557 Add a note to generated plugins files

45379 Add .flutter-plugins-dependencies to the project, which contains the app’s plugin dependency graph

3850 Support co-editing Flutter and Android in a single project

4097 Support for debugging add-to-app modules in Android Studio

4129 Smooth out the rough spots in add-to-app support

4062 Re-enable attach button for add-to-app projects

4004 Co-edit module created in Android Studio

33297 Instrument add to app flows

33458 Add to app measurement

34189 Instrument usage of include_flutter.groovy and xcode_backend.sh

13289 Made restarting the Engine remember the last entrypoint that was used.

12370 Added a default entrypoint variable to match android syntax.

10823 Expose isolateId for engine

13264 Made restarting the Engine remember the last entrypoint that was used.

13789 add recent packages to javadoc list

10481 Android embedding refactor pr40 add static engine cache

29946 Let CupertinoPageScaffold have tap status bar to scroll to top

12587 Split out the logic to handle status bar touches into its own function

44638 Add module to create template help text

9351 Android Embedding Refactor PR32: Clean up logs in new embedding.

6447 iOS Embedding Refactor

41794 Updated the docstring for SystemNavigator.pop.

9304 Decorate UIApplicationDelegate wrappers with matching UIKit deprecation

266 [firebase_performance] support v2 android embedding

274 [firebase_core] v2 embedding API

275 [firebase_ml_vision] v2 embedding API

282 [firebase_remote_config] Support v2 android embedder.

287 [firebase_database] Support v2 android embedder.

1266 [firebase_analytics] Support Android v2 embedding

1295 [firebase_storage] Support Android v2 embedding

1369 Upgrade in-app-messaging to plugin api v2

1370 Upgrade crashlytics to v2 plugin API

1372 [firebase_dynamic_links] support v2 embedding

2142 [Connectivity] migrate to the new android embedding

2152 [battery] Support the v2 Android embedder

2155 [in_app_purchase] migrate to the v2 android embedding

2156 [Share] Support v2 android embedder.

2157 [url_launcher] Migrate to the new embedding

2160 [package_info] Support the v2 Android embedder (with e2e tests)

2162 [shared_preferences] Support v2 android embedder.

2163 [device_info] Support v2 android embedder.

2164 [sensor] Support v2 android embedder.

2165 [camera] Migrate to the new embedding

2167 [quick_actions] Support v2 android embedder.

2169 [flutter_webview] Migrate to the new embedding

2193 [android_alarm_manager] migrate to the V2 Android embedding

2195 [android_intent] Cleanup the V2 migration

2196 [webview_flutter] (Trivial) Add V2 warnings

2200 [flutter_webview] Revert v2 embedder support

2204 [url_launcher] Re-land v2 embedding support

2209 [webview_flutter] Re-land support v2 embedding support

2226 [video_player] Add v2 embedding support

2241 [Shared_preferences]suppress warnings

2284 [path_provider] Add v2 embedding support for

2327 [android_alarm_manager] Update minimum Flutter version to 1.12.0

43461 Fixed usage of optional types in swift integration test.

13423 Automatically destroy FlutterEngine when created by FlutterActivity or FlutterFragment.

42958 Turn off bitcode for integration tests and add-to-app templates

13428 Set the install name at link time for darwin dylibs

41333 Merge Flutter assets in add to app

39747 Fix type mismatch in Gradle

39986 Enable Proguard by default on release mode

40181 Update Kotlin and Gradle version

40282 Flip the default for proguard

40440 Rename useProguard method, so Gradle doesn’t get confused

40453 Enable R8

40610 Enable the resource shrinker

40900 Stop using deprecated features from Gradle

40925 Use AndroidX in new projects by default

41142 Add embedding as API dependency instead of compile only dependency

41251 Migrate examples and tests to AndroidX

41254 Test that flutter assets are contained in the APK

41885 Include embedding transitive dependencies in plugins

41942 Use mergeResourcesProvider instead of deprecated mergeResources

42022 Fix smoke test

42306 Ensure that flutter assets are copied in the AAR

42352 Add android.permission.WAKE_LOCK permission to abstract_method_smoke_test

42360 Add smoke test for the new Android embedding

42548 Print message and log event when app isn’t using AndroidX

42684 Remove isNewAndroidEmbeddingEnabled flag when reading an existing pro…

42709 Test Gradle on Windows

42981 Remove GeneratedPluginRegistrant.java

43187 Ensure android.enableR8 is appended to a new line

43479 Refactor gradle.dart

43669 Don’t read AndroidManifest.xml if it doesn’t exit

43674 Add missing import

43675 Fix device lab tests

43927 Fix stdout test

43941 Tweaks after the gradle.dart refactor

44301 Don’t print how to consume AARs when building plugins as AARs

44243 Build local maven repo when using local engine

44302 Don’t add x86 nor x64 when building a local engine in debug mode

44637 Attach looks at future observatory URIs

44783 Forward ProcessException to error handlers

44797 Build AAR for all build variants by default

45439 Fallback to protocol discovery if mdns returns null

45579 Add integration test for transitive plugin dependencies

45743 Android log reader reads any recent logs

45937 Handle case where lastLogcatTimestamp is null

46040 Enable Android embedding v2 on the beta, dev and stable channel

46101 Remove flutterBuildPluginAsAarFeature flag

14136 Expanded our scenario_app docs.

14094 Started specifying the OS version for running the tests.

13421 FlutterAppDelegate: Added back in empty lifecycle methods

13073 Removed retain cycle from notification center.

13006 Refactor: FlutterDartProject

44782 Updated flutter/examples to further conform to new embedding: removed references to FlutterApplication, deleted all MainActivity’s that were not necessary, removed all direct invocations of GeneratedPluginRegistrant. (#22529)

45740 Do not delete output directory during flutter build ios-framework

45560 Always compile with isysroot on iOS to point to SDK root

45436 Always compile with -isysroot flag on iOS to point to SDK root

45189 Remove chmod to make Flutter framework headers unwritable


44633 Turn on bitcode for integration tests and add-to-app templates

44625 Release startup lock during long-lived build ios framework

44324 Add swift_versions to plugin template podspec, include default CocoaPod version

43915 Observe logging from VM service on iOS 13

43553 Pass environment variables through to xcodebuild

42872 Remove use_modular_headers from Podfiles using libraries

42808 Run flutter pub get before pod install in platform_view_ios__start_up test

42254 Update minimum version to Xcode 10.2

42204 Add use_modular_headers! to default Podfile

42029 Always embed iOS Flutter.framework build mode version from Xcode configuration

41882 Increase template Swift version from 4 to 5

41491 Skip pod initialization if version >= 1.8.0.

40792 Move build info checks from generating files to the xcode build

40611 Warn when build number and version can’t be parsed on iOS

40401 Make FlutterPluginRegistrant a static framework so add-to-app can use static framework plugins

40174 Keep Flutter.framework binaries writable so they can be code signed

40117 Show outdated CocoaPods version in hint text

39539 Keep Flutter.framework binaries writable so they can be code signed

39509 Skip failing add2app test to unblock roll

38992 Clean Xcode workspace during flutter clean

38905 Remove iphonesimulator from SUPPORTED_PLATFORMS for Profile and Release modes

11357 Rename first frame method and notify FlutterActivity when full drawn (#38714 #36796).

11844 Updated API usage in scenario app by deleting unnecessary method.

11902 Remove un-needed FragmentActivity import statements to facilitate proguard.

12305 Introduce flutterfragmentactivity

12328 Added javadoc comments to FlutterActivity and FlutterFragmentActivity.

12359 Forwards Flutter View to platform views and detaches when needed.

12362 Fixes race condition that was reported internally.

12806 Move initialization into FlutterEngine

12987 Added FlutterActivity and FlutterFragment hook to cleanUpFlutterEngine() as symmetry for configureFlutterEngine(). (#41943)

13214 Forwards Activity result to FlutterFragment in FlutterFragmentActivity.

13215 Adds Dark Mode support to new Android embedding (this was accidentally missed previously).

13402 Converted ActivityAware and ServiceAware Lifecycles to opaque objects (#43670)

13660 Fix splash screen lookup. (#44131)

13698 Fix plugin registrant reflection path. (#44161)

13738 Removed scary experimental warnings for new embedding. (#44314)

13739 Point old plugin registry accessors to new embedding plugin accessors. (#44225)

13743 Expose asset lookup from plugin binding. (#42019)

13855 Add support for –dart-flags in FlutterShellArgs. (#44855)

13932 Removed GET_ACTIVITIES flag from all manifest meta-data lookups. (#38891)

2087 [android_alarm_manager] Update and migrate iOS example project

2088 [android_intent] Update and migrate iOS example project

2089 [battery] Update and migrate iOS example project

2090 [camera] Update and migrate iOS example project

2091 [connectivity] Update and migrate iOS example project

2092 [device_info] Update and migrate iOS example project

2093 [google_maps_flutter] Update and migrate iOS example project

2094 [google_sign_in] Update and migrate iOS example project

2095 [image_picker] Update and migrate iOS example project

2096 [in_app_purchase] Update and migrate iOS example project

2097 [local_auth] Update and migrate iOS example project

2098 [package_info] Update and migrate iOS example project

2099 [path_provider] Update and migrate iOS example project

2100 [quick_actions] Update and migrate iOS example project

2101 [sensors] Update and migrate iOS example project

2102 [share] Update and migrate iOS example project

2103 [shared_preferences] Update and migrate iOS example project

2109 [url_launcher] Update and migrate iOS example project

2110 [video_player] Update and migrate iOS example project

2115 [camera] Define clang modules in for iOS

2125 [in_app_purchase] Define clang module for iOS

2128 [image_picker] Define clang module for iOS

2135 [android_alarm_manager] Define clang module for iOS

2137 [connectivity] Define clang module for iOS

2138 [device_info] Define clang module for iOS

2144 [android_intent] Define clang module for iOS

2145 [instrumentation_adapter] Define clang module for iOS

2146 [local_auth] Define clang module for iOS

2147 [path_provider] Define clang module for iOS

2148 [package_info] Define clang module for iOS

2149 [quick_actions] Define clang module for iOS

2175 [sensors] Define clang module for iOS

2176 [shared_preferences] Define clang module for iOS

2177 [url_launcher] Define clang module for iOS

2179 [battery] Define clang module for iOS

2180 [share] Define clang module for iOS

2182 [google_maps_flutter] Define clang module for iOS, fix analyzer warnings

2183 [video_player] Define clang module for iOS

2184 [google_sign_in] Define clang module for iOS

2185 [webview_flutter] Define clang module for iOS

2186 Run clang analyzer on iOS and macOS code in CI test when packages change

40302 Set DEFINES_MODULE for FlutterPluginRegistrant to generate modulemap

2206 [flutter_plugin_android_lifecycle] Update README with new plugin name

2207 [flutter_plugin_android_lifecycle] bump e2e depenency to 0.2.1

2223 [flutter_plugin_android_lifecycle] register the e2e plugin in the example app

2243 [flutter_plugin_android_lifecycle] Adapt the FlutterLifecycleAdapter to the new embedding API

44043 Add Android embedding version analytics

2120 [image_picker] fix crash when aar from ‘flutter build aar’

2168 Add plugin for Android lifecycle in embedding

2174 [url_launcher] Enable androidx and jetifier in android gradle properties

11239 Remove dart entrypoint Intent parameter from FlutterActivity. (#38713)

12469 Started asserting the FlutterEngine is running before communicating over channels.

13403 Use DartExecutor.getBinaryMessenger in FlutterNativeView instead of deprecated send methods


Material continues to a focus for the Flutter team. In this release, we refreshed all Material widgets with dark mode support. Also, we added support for extending the height of the Scaffold’s body behind the app bar, which is contributed by a community member!

36998 Added properties in DropdownButtonFormField to match DropdownButton

37962 Show search app bar theme

38583 Added InheritedTheme

38650 Allow independent theming of Persistent and Modal bottom sheets

38709 [Material] Add contentPadding property to SwitchListTile

38726 Make disabled buttons/chips/text fields not be focusable.

38813 Add ToggleButtons.textStyle property

38831 [Material] Add clip property to bottom sheet and theme

38898 ToggleButtons test improvement

39144 Add the textAlignVertical param to TextFormField

39156 Added Scaffold.extendBodyBehindAppBar

39299 Add showAboutDialog sample

39333 Allow independent theming of Persistent and Modal bottom sheets Background Color

39433 Add helperMaxLines to InputDecoration and InputDecorationTheme

39572 Prevent exception when creating a Divider borderSide

39583 Fix single action banner to ensure button alignment

39627 Default colorScheme data in ButtonThemeData (fix for #38655)

39632 Updates to debugFillProperties to test all properties in slider.dart and slider_test.dart

39903 Fixed passing autofocus to MaterialButton, and when rebuilding Focus widget.

39924 Adds DartPad option to the DartDoc snippet generator.

40390 a11y improvements for textfield

40608 Add the option to configure a chip check mark color

40641 Add onLongPress to Buttons

40665 Fix CupertinoTextField and TextField ToolbarOptions not changing

40713 Material textselection context menu cannot disable select all

40994 Fix the ThemeData.copyWith toggleButtonsTheme argument type

41120 Dropdown Menu layout respects menu items intrinsic sizes

41150 Rebuild modal routes when the value of userGestureInProgress changes

41172 fix some bad indentations

41320 [Material] Remove text ripple from TextFields

41338 Fix ReorderableListView’s use of child keys (#41334)

41463 [Chip] Make sure InkResponse is in the foreground on delete for chips with background color

41625 Update DefaultTabController to allow for zero tabs

41629 [Material] Fix Tooltip to respect ambient Directionality

41632 fix confusing ‘popupTheme’ variable name in a MaterialBannerTheme method

41640 some formatting changes

41650 DropdownButton.style API doc example for differing button and menu item text styles

41864 Update BottomAppBar to use elevation overlays when in a dark theme

41972 Add enableFeedback param to MaterialButton, RawMaterialButton and IconButton

42033 Reprise: Dropdown Menu layout respects menu items intrinsic sizes

42189 Fix regression with ModalBottomSheets not responding to changes in theme

42366 TextStyle.fontFamily should override fontFamily parameter in ThemeData

42404 Add isDismissible configuration for showModalBottomSheet

42482 Only dismiss dropdowns if the orientation changes, not the size.

42554 Fix route focusing and autofocus when reparenting focus nodes.

42613 Fix Tooltip implementation of PopupMenuButton

42683 Optimize focus operations by caching descendants and ancestors.

42779 Fix chip ripple bug — No longer two ripples

42811 Add a Focus node to the DropdownButton, and adds an activation action for it.

42936 Support AppBars with jumbo titles

43213 Add focus nodes, hover, and shortcuts to switches, checkboxes, and radio buttons.

43422 trivial fixed AboutListTile having an empty icon placeholder when no icon set.

43511 Improve DropdownButton assert message

43526 Change PopupMenuButton.icon type to Widget

43722 Make selected item get focus when dropdown is opened

43843 Remove print and fix code formatting

43848 Don’t allow Disabled InkWells to be focusable

43859 Add convenience accessor for primaryFocus

43946 Adding subtitle to ExpansionTile

43981 Fix typo in app_bar.dart

44029 Use alphabetic baselines for layout of InputDecorator

44068 Fix typo in tabs.dart

44076 Typo on comments

44160 Wire selectedItemBuilder through DropdownButtonFormField

44296 ModalBarrier and Drawer barrier prevents mouse events

44736 Check in new diffs to material localizations

44787 Fix snippets to include element ID in the output sample.

44867 FocusableActionDetector widget

45081 Remove duplicated expect from text field test

45362 Add widget of the week video embeddings

Text & Accessibility

In Text and Accessibility, we have several enhancements in ButtonBar and AlertDialog to prevent text overflow.

40468 Propagate textfield character limits to semantics

41730 Allow customization of label styles for semantics debugger

42344 Add onVisible callback to snackbar.

42368 Update android semantics test to match existing engine behavior.

43193 ButtonBar aligns in column when it overflows horizontally

43226 Implement AlertDialog title/content overflow scroll

38573 Clamp scrollOffset to prevent textfield bouncing

41108 Fixing a text editing bug happening when text field changes.

44605 Changing RenderEditable.textAlign doesn’t break hot reload anymore

Animation & Scroll

For animation, we released the TweenAnimationBuilder for building custom implicit animations. For more information, check out this TweenAnimationBuilder video on Youtube.

38317 TweenAnimationBuilder for building custom animations without managing an AnimationController

38979 Adding onEnd callback to implicit animated widgets

43756 Mark routes as opaque when added without animation

39142 fix sliverfixedextent with sliverchildbuilderdelegate does not correc…

44965 Scroll scrollable to keep focused control visible.


We increased our support for web, moving it from the dev channel to the beta channel. For more details, please check web support blog post.

37819 Add HtmlElementView (the Flutter Web platform view)

38723 Handle compilation failures from web application

38823 Print service url when connecting to web applications

39006 Add web workflow to default validators

39066 Kill resident runner on browser disconnect.

39073 Add profile mode to flutter web applications

39189 fix source map loading and service protocol for flutter web

39344 Upstream changes necessary for text editing in flutter web

39364 Correct libraries path and remove dart:io and dart:isolate for dart platform

39414 Make sure profile is forwarded through build web command

39462 Remove run in shell and add unit test for chrome launching

39543 create .dart_tool if it is missing

39628 Automatically generated registrants for web plugins

39748 print launching on device message

39751 Minor cleanup and prevent multiple exit

39752 Add delay to recompile request for web

39756 remove web flag from create

39774 workaround for mangled web sdk source map packages

39910 If there are no web plugins, don’t generate a plugin registrant

39950 Register reload sources call and make ‘r’ restart for web

39951 Add “web” server device to allow running flutter for web on arbitrary browsers

39983 Update the supported library set for Flutter for web

39999 Disable the performance overlay for web

40175 Ensure we send hot restart events for flutter web

40191 add host and port to run configuration for web devices

40301 Allow skipping webOnlyInitializePlatform in Flutter for Web

40370 rename port to web-port and hostname to web-hostname

40465 Pass –web-hostname and –web-port to release mode debugging options

40627 Allow skipping chrome launch with –no-web-browser-launch

40757 Fix visibility of web server device when Chrome is not available

41222 Copy archived js part files out of dart_tool directory

41347 Fix timing issues in initialization of web resident runner

41386 Serve every html file under web

41397 Keymap for Web

41441 Exit resident web runner on compilation failure

41545 Add analytics tracking for compile and refresh times for Flutter Web

41618 Rename Server/web to Headless Server/headless-server

41695 Add more information to cannot find Chrome message

41815 [web] Make it clear that lowercase “r” can also perform hot restart

41906 Ensure plugin registrants are generated in build_web

41996 [web] Always send the route name even if it’s null

42144 Don’t eagerly call runMain when –start-paused is provided to web application

42260 Small cleanup of web code

42289 Ensure precache web works on dev branch

42531 Print correct hostname when web server is launched

42676 [web] Update web runner message with flutter.dev/web

42701 serve correct content type from debug server

42857 Fix progress indicators for release/profile builds of web.

42951 implement debugTogglePlatform for the web

42970 Rename headless server to web server

43214 For –profile builds on web, still use -O4 but unminified names.

43573 Catch MissingPortFile from web tooling.

43576 Enable usage of experimental incremental compiler for web

44028 Support –no-resident on the web

44263 Allow web server device to use extension if started with –start-paused

44268 Switch from using app.progress to app.webLaunchUrl for passing web launch urls

44421 switch web test to macOS

44744 Ensure web-server does not force usage of dwds

44746 Remove chrome device web integration test

44830 Update manual_tests to be able to run on macOS/web

45145 cache sdkNameAndVersion logic for web devices

45286 Fix experimental incremental web compiler for Windows

11360 build legacy web SDK

11421 sync Flutter Web engine to the latest

11732 last flutter web sync: cc38319841

11796 Provide a hook for a plugin handler to receive messages on the web

12161 Ensure that the web image ImageShader implements Shader

12335 [Web] Implement dark mode support for web

12445 [web] filter test targets; cache host.dart compilation

12712 Support correct keymap for web

12747 Add web implementation for channel_buffers.dart

12753 [web] Don’t require felt to be in PATH

12794 [web] Add support for path transform

12811 [web] Implement basic radial gradient (TileMode.clamp, no transform)

13003 [web] Update the url when route is replaced

13066 [web] Add basic color per vertex drawVertices API support

13141 Enable/tweak web sdk source maps

13161 Enable/tweak web sdk source maps, take 2

13187 [web] Environment variable to disable felt snapshot

13190 [web] Fix canvas reuse metrics. Refactor drawVertices code.

13259 [web] Support -j to use goma in felt build

13268 [web] Support input action

13272 [web] [test] Adding firefox install functionality to the test platform

13296 [web] Cupertino dynamic color fix.

13359 Web: fix Color subclass handling

13462 [web] Get the size from visualviewport instead of window.innerHeight/innerW…

13483 web: fix Paragraph.getBoxesForRange for zero-length ranges

13634 [web] Ignore changes in *.ttf files in felt build watch mode

13699 [web] Don’t send keyboard events from text fields to flutter

13722 [web] Proper support for text field’s obscureText

13741 [web] Refactor text editing to handle any order of platform messages gracefully

13748 [web] Support gif/webp animations, Speed up image drawing in BitmapCanvas.

13769 [web] Implement TextStyle.shadows

13779 [web] Fix path to svg for drrect

13802 [web] Fix selectable text rendering

13809 [web] Fix blendmode for images

13860 [web] Change canvas sibling transforms to 3d with z=0 to get around canvas rendering bug.

13901 [web] Fix single line bitmap canvas text shadow

13909 [web] Implement PathMetrics.length

13922 [web] Flutter for web autocorrect support

13929 [web] Allow users to enable canvas text measurement

13940 [web] Fix Edge detection for correct dom_renderer reset

13960 [web] Fix default line-height issue for Firefox

13981 [web] use Element.nodes instead of Element.children in text layout

2119 Add web url launcher


We are also moving macOS support from tech preview to alpha, enabling it in the dev channel. For more details, please see flutter.dev/desktop.

37901 [macos] Check for special keys before creating a logical key

38748 Create correctly structured framework for macOS

38858 Use GLFW-name artifacts on Windows and Linux

38909 Add support for macOS release/profile mode (3 of 3)

39017 Add “OneSequenceRecognizer.resolvePointer”. Fix DragGestureRecognizer crash on multiple pointers

39264 Add profile support on macOS

39432 Do not hide .git in zip for Windows

39702 Fix macOS App.framework version symlink

39836 Switch to the Win32 Windows embedding

40011 [windows] Searches for pre-release and ‘all’ Visual Studio installations

40186 Add shortcuts and actions for default focus traversal

40194 Add an ephemeral directory to Windows projects

40197 [windows] Refactor to optimize vswhere queries

40294 fix copy command and remove resolve sync for macOS assemble

40375 Harden macOS build use of Xcode project getInfo

40393 Convert build mode to lowercase in tool_backend

40587 Add an ephemeral directory for Linux

40730 Invalidate macOS pods on plugin changes

40851 Support create for macOS (app and plugin)

41015 Add the beginnings of plugin support for Windows and Linux

41332 Prevent PointerEnter[or Exit]Event from erasing event.down value

41551 Pass Linux build mode on command line

41612 AOT support for Linux Desktop I: switch Linux builds to assemble

41747 Add Profile entry to macOS Podfile

42031 Rewrite MouseTracker’s tracking and notifying algorithm

42235 Reading deviceId for RawKeyEventDataAndroid event

42487 refactor depfile usage and update linux rule

42861 Add repeatCount to RawKeyEventDataAndroid

42962 Remove linux-x64 unpack logic

43238 Fixing focus traversal when the node options are empty

43362 Allow rebuilding of docker image, re-enable deploy gallery macos

43758 Split desktop config fallback variable by platform

44130 Add command key bindings to macOS text editing and fix selection.

44410 Add macOS fn key support.

44576 [ci] Use the latest Cirrus Image for macOS

44620 Bump memory requirements for tool_tests-general-linux

44844 Properly interpret modifiers on GLFW key events

45264 Add macOS hot reload test

45392 [ci] more resources to Windows tasks

8507 Add texture support for macOS shell.

11324 Clean up Windows and Linux build output

11327 [Windows] Update API for alternative Windows shell platform implementation

11380 Use App.framework in macOS FlutterDartProject

11386 Allow non-resizable windows in GLFW embedding

11475 buildfix: support build windows release/profile mode(#32746)

11828 [Windows] Address #36422 by adding a context for async resource uploading

12230 Add an initial macOS version of FlutterAppDelegate

12234 [glfw/windows] Stops keeping track of input models

12267 [macos] Stops keeping track of text input models

12276 Add system font change listener for windows

12423 add windows embedding test

12809 Use the x64 host toolchain for x86 target gen_snapshot only on Linux

12814 Enable all engine test on windows

13300 Switch the MacOS Desktop embedder to using a thread configuration where the platform and render task runners are the same.

13702 Fix editing selection and deletion on macOS


We’ve fixed many bugs in this release to improve the quality and stability of our framework.

38643 PlatformViewLink handles focus

38699 fix widgetspan does not work with ellipsis in text widget

38789 Fix DragTarget not being rebuilt when a rejected Draggable enters #38786

38930 Implement system fonts system channel listener

38936 Fix KeySet (and LogicalKeySet) hashCode calculation

39059 Explain const values in MediaQuery test file

39085 Make inspector details subtree depth configurable.

39089 Correct InheritedTheme.captureAll() for multiple theme ancestors of the same type

39195 respect reversed scroll views

39252 Adds relayout option to CustomMultiChildLayout.

39282 Expose text metrics in TextPainter.

39354 Add IterableFlagsProperty and use it on proxy box classes

39428 Replace doc example text

39446 Add viewType to PlatformViewLink

39844 Fix curve for popping heroes

40099 Fix double.infinity serialization

40105 Ensure frame is scheduled when root widget is attached

40119 fix skips to include all channels

40280 PlatformView: recreate surface if the controller changes

40306 Restore offstage and ticker mode after hero pop and the from hero is null

40609 Specify ifTrue and ifFalse for strut FlagProperty

40635 Return WidgetSpans from getSpanForPosition

40638 Allow sending platform messages from plugins to the framework and implement EventChannel

40709 Fixed Selectable text align is broken

40718 Handle CR+LF end of line sequences in the license parser

40775 Use EdgeInsetsGeometry instead of EdgeInsets

40917 AnimatedBuilder API Doc improvements

41145 Explicitly set CocoaPods version

41245 Change the way ActionDispatcher is found.

41329 Refactor: Base tap gesture recognizer

41417 Address previous comments, fix Intent.doNothing.

41763 No longer rebuild Routes when MediaQuery updates

41791 Refactor: Make MouseTracker test concise with some utility functions

41803 Fixed media query issues and added test to prevent it from coming back

41879 Make MouseTracker.sendMouseNotifications private

42076 create gesture recognizers on attach and dispose on detach to avoid leaks

42253 Change modal barrier to dismissing on tap up

42484 Gradient transform

42526 Improve routers performance

42558 Use placeholder dimensions that reflect the final text layout

42688 Source Code Comment Typo Fixes

42777 Fix memory leak in TransitionRoute

42879 Re-implement hardware keyboard text selection.

42953 Soften layer breakage

43006 Set default borderRadius to zero in ClipRRect (as documented)

43246 Tap.dart: Fixes the spacing to the right side of reason

43296 Skip failing test to green build

43467 Fixed bug where we could accidently call a callback twice.

43677 add libzip cache artifact

43684 [flutter_runner] Use sky_engine from the topaz tree

43685 Remove Poller class from flutter_tools

43739 enable avoid_web_libraries_in_flutter

43865 Reorder show and setEditingState calls to the IMM

44150 Manually roll engine to unred the tree

44217 Moving pointer event sanitizing to engine.

44233 Remove yield from inherited model

44408 Remove no longer needed clean up code

44422 Remove TextRange, export it from dart:ui

44490 Fix “node._relayoutBoundary == _relayoutBoundary” crash

44611 Convert to TextPosition for getWordBoundary

44617 Make disposing a ScrollPosition with pixels=null legal

44622 Track and use fallback TextAffinity for null affinity platform TextSelections.

44967 Try a mildly prettier FlutterError and make it less drastic in release mode

45083 Fix draggable scrollable sheet scroll notification

45240 implicit-casts:false in flutter_web_plugins

45249 implicit-casts:false in flutter_goldens and flutter_goldens_client


In this update, the core engine continues to see many improvements, including a fix that solves the long-requested scrolling performance issue on iPhoneX/Xs.

9386 [glfw] Send the glfw key data to the framework.

9498 Notify framework to clear input connection when app is backgrounded (#35054).

9806 Reuse texture cache in ios_external_texture_gl.

9864 Add capability to add AppDelegate as UNUserNotificationCenterDelegate

9888 Provide dart vm initalize isolate callback so that children isolates belong to parent’s isolate group.

10154 Started taking advantage of Skia’s new copyTableData to avoid superfluous copies.

10182 Made flutter startup faster by allowing initialization to be parallelized

10326 copypixelbuffer causes crash

10670 Expose LineMetrics in dart:ui

10945 De-dup FILE output for each license

11041 Add a BroadcastStream to FrameTiming

11049 Release _ongoingTouches when FlutterViewController dealloc

11062 Provide a placeholder queue ID for the custom embedder task runner.

11063 Update ExternalViewEmbedder class comment.

11070 Platform View implemenation for Metal

11210 Add Chrome to Dockerfile

11222 Dont present session twice

11224 Update metal layer drawable size on relayout.

11226 Make firebase testlab always pass

11228 Re-enable firebase test and don’t use google login

11230 Update tflite_native and language_model revisions to match the Dart SDK

11256 Upgrade compiler to Clang 10.

11265 make it possible to disable debug symbols stripping

11270 Reset NSNetService delegate to nil,when stop service.

11283 Fix objects equal to null not being detected as null

11300 Do not Prepare raster_cache if view_embedder is present

11305 Fix a segfault in EmbedderTest.CanSpecifyCustomTaskRunner

11306 Set FlutterMacOS podspec min version to 10.11

11309 Fix change_install_name.py to be GN-friendly

11310 When using a custom compositor, ensure the root canvas is flushed.

11315 Do not add null task observers

11330 Remove engine hash from the output artifact

11355 update sim script

11356 Remove engine hash from pom filename

11361 Include Java stack trace in method channel invocations

11367 Make message loop task entry containers thread safe

11368 Switch to an incremental runloop for GLFW

11374 Update scenarios readme

11382 Trivial: remove empty line in the pom file

11384 Account for root surface transformation on the surfaces managed by the external view embedder.

11388 Allow overriding the GLFW pixel ratio

11392 Wire up software rendering in the test compositor.

11394 Avoid root surface acquisition during custom composition with software renderer.

11395 Remove deprecated ThreadTest::GetThreadTaskRunner and use the newer CreateNewThread API.

11416 Shrink cirrus docker image: reduce RUN count, apt-get clean

11419 Support non-60 refresh rate on PerformanceOverlay

11420 Fix touchpad scrolling on Chromebook

11423 Add tracing of the number of frames in flight in the pipeline.

11427 Skip empty platform view overlays.

11436 update method for skia

11456 Update the ui.LineMetrics.height metric to be more useful to external users

11473 Add missing newline at EOF

11489 Ensure trailing newline before EOF in C++ sources

11520 Bitcode only for release

11524 Reuse texture cache in ios_external_texture_gl

11528 Strip bitcode from gen_snapshot

11537 Add check to enable metal for import

11550 Make Skia cache size channel respond with a value

11554 make engine, ui, and sdk rewriter inputs of dill construction

11576 Minor tweaks to the Doxygen theme.

11622 Include from font_asset_provider

11635 [flutter_runner] Port Expose ViewBound Wireframe Functionality

11636 [fidl][flutter_runner] Port Migrate to new fit::optional compatible APIs

11638 Update CanvasSpy::onDrawEdgeAAQuad for Skia API change

11649 [flutter] Port: Run handle wait completers on the microtask queue

11654 Append newlines to EOF of all translation units.

11655 Don’t crash while loading improperly formatted fonts on Safari

11669 Add style guide and formatting information

11717 Return a JSON value for the Skia channel

11722 Quote the font family name whenever setting the font-family property.

11736 Add wasm to sky_engine

11776 [flutter_runner] Port over all the changes to the dart_runner cmx files

11783 completely strip bitcode

11795 Add a good reference source for font metrics.

11804 Incorporate View.setSystemGestureExclusionRects code review feedback from #11441

11808 Annotate nullability on FlutterEngine to make swift writing more ergonomic

11835 [CFE/VM] Fix merge/typo for bump to kernel version 29

11839 Remove ENABLE_BITCODE from Scenarios test app

11842 Fix RTL justification with newline by passing in full justify tracking var

11847 Add a sample unit test target to flutter runner

11849 Support building standalone far packages with autogen manifests

11875 [flutter_runner] Add common libs to the test far

11877 Finish plumbing message responses on method channels

11880 Handle new navigation platform messages

11893 Add @Keep annotation

11899 Improve input method and Unicode character display(#30661)

12011 Cherry-picks for 1.9.1

12016 [flutter_runner] Kernel platform files can now be built in topaz

12023 Fix multi span text ruler cache lookup failure.

12026 [flutter_runner] Plumb Flutter component arguments to the Dart entrypoint

12034 [flutter_runner] Refactor our build rules to make them more inline with topaz

12048 [flutter_runner] Generate symbols for the Dart VM profiler

12054 [flutter_runner] Port the accessibility bridge from Topaz

12076 Add a method to flutter_window_controller to destroy the current window.

12080 Don’t quote generic font families

12081 Add GradientRadial paintStyle implementation

12087 Don’t launch the observatory by default on each embedder unit-test invocation.

12204 Don’t disable toString in release mode for dart:ui classes

12205 Don’t load Roboto by default

12218 Namespace patched SDK names to not conflict with Topaz

12222 Do not generate kernel platform files on topaz tree

12226 [web_ui] add missing dispose handler for MethodCalls to flutter/platform_view

12227 [web_ui] PersistedPlatformView attribute update handling to enable resizing

12228 pin and auto-install chrome version

12229 Improve check to render (or not) a DRRect when inner falls outside of outer on RecordingCanvas

12249 Editable text fix

12253 Implement Base32Decode

12256 Do not assume Platform.script is a Dart source file during training.

12257 Re-enable ThreadChecker and fix associated failures

12258 Refactor and polish the ‘felt’ tool

12269 a11y: expose max character count for text fields

12273 Clean up after AppLifecycleTests

12274 Store screenshot test output as Cirrus artifacts; do fuzzy comparison of non-matching screenshot pixels

12275 Shuffle test order and repeat test runs once.

12281 optionally skip builds

12282 [flutter_runner] Change the path to artifacts

12287 Adds PluginRegistry to the C++ client wrapper API

12288 Include firefox in check to quote font families

12289 Fix flutter runner paths

12303 Add a build command to felt

12306 Fix the declaration of setSystemGestureExclusionRects to match the PlatformMessageHandler interface

12307 Cleanup in web_ui

12308 [flutter] Remove old A11y API’s.

12318 Update canvaskit backend

12319 Add “type” to getDisplayRefreshRate protocol

12320 Fix continuous event polling in the GLFW event loop

12323 README for the felt tool

12330 Ensure DRRects without corners also draw.

12336 Check for index bounds in RTL handling for trailing whitespace runs.

12340 [flutter_runner] Do not use pre-builts just yet

12342 Update test to verify that secondary isolate gets shutdown before root isolate exits.

12343 [flutter_runner] Remove usages of shared snapshots from CC sources

12345 [flutter_runner] Port over the tuning advice for vulkan surface provider

12346 [flutter_runner] Move from runner context to component context

12347 [flutter_runner][async] Migrate dart/flutter to new async-loop APIs

12348 [flutter_runner] Port the new compilation trace from topaz

12349 [flutter_runner] Explicitly set trace_skia to false

12350 [flutter_runner] Port vulkan surface changes

12355 skip flaky test

12363 Track “mouse leave” event

12375 Sync dart_runner

12395 Update –dart-vm-flags whitelist to include –write-service-info and –sample-buffer-duration

12403 Don’t send pointer events when the framework isn’t ready yet

12410 Send TYPE_VIEW_FOCUSED for views with input focus.

12412 SkSL precompile

12426 Store fallback font names as a vector instead of a set.

12431 Interpret negative radii as 0 in recording_canvas.dart

12432 Work around Samsung keyboard issue

12434 delete golden files; switch to flutter/goldens

12435 add dart:html, dart:js, and dart:js_util to the copy of the Dart SDK used for analysis

12443 Force exit felt tool on sigint, sigterm

12446 Add support for JIT release mode

12447 Reflect selection changes in Firefox for text editing

12448 Make kDoNotResizeDimension public so framework can use it directly

12450 Adds support for 5 mouse buttons

12453 Adding Link SemanticsFlag

12454 Add .mskp file to binary format

12470 [web_ui] Check if a pointer is already down for the specific device

12479 Refactoring text_editing.dart

12563 Remove use of the blobs snapshot format from unittests

12565 Remove references to topaz

12573 [flutter_runner] Refactor thread_application pair to ActiveApplication

12618 Add isFocusable to SemanticsFlag

12681 Create a package-able incremental compiler

12695 Add onUnregistered callback in ‘Texture’ and ‘FlutterTexture’

12698 [web_ui] Fixing invalid state bug for text editing

12699 Adding ‘pub get’ to the ‘compile_xxxx.sh’ in the Scenario app

12700 Add missing flag for embedder.

12701 Cleanup: Made a macro to assert ARC is enabled.

12706 Check for a null input method subtype

12708 Cleanup: Turned on NS_ASSUME_NONNULL_BEGIN for FlutterViewController.

12710 Set transparent background in textarea elements

12725 Expanded channel buffer resize to method channels.

12728 Remove unused import in the scenario app

12730 Stop setting the accessibility text if a node has SCOPES_ROUTE set.

12733 [flutter_runner] Make rd and rx uniform

12746 Send AccessibilityEvent.TYPE_VIEW_FOCUSED when input focus is set.

12754 Fix Metal builds by accounting for the updated SubmitFrame signature.

12775 Added some thread asserts to the code and made ios_surface_ safe since

12777 Fix Metal builds.

12780 Restart all modern Samsung keyboard IMM

12783 Add a unit-test to verify that root surface transformation affects platform view coordinates.

12785 Fix bug in package script and add dev_compiler to list

12793 Fixing selection issues in Firefox

12797 add option for bulk-updating screenshots; update screenshots (Work in progress

12798 [flutter_runner] Update the cmx files to include TZ support

12799 Disable EmbedderTest::CanLaunchAndShutdownMultipleTimes.

12800 Prettify all CMX files

12801 do not wrap font family name

12802 Build gen_snapshot with a 64-bit host toolchain even if the target platform is 32-bit

12808 Added an embedder example

12813 Unblock SIGPROF on flutter_tester start

12816 Enable sanitizer build variants.

12821 Update buildroot to pull in ubsan updates.

12931 remove references to package:_chrome

12958 Adding deviceId to KeyEventChannel enconding method

12960 Fix typo on channel buffer debug output.

12974 Support empty strings and vectors in standard codec

12980 Made _printDebug only happen on debug builds of the engine for now.

12982 Color matrix doc

12986 Prevent default when Tab is clicked

12988 Use the standard gen_snapshot target unless the platform requires host_targeting_host

12989 Unpublicize kDoNotResizeDimension

12991 Compile sanitizer suppressions list and file bugs as necessary.

12999 Started setting our debug background task id to invalid

13001 Missing link flag

13004 Allow embedders to disable causal async stacks in the Dart VM

13005 Auto-formatter fixes for BUILD.gn files

13008 Integration with more of Skia’s SkShaper/SkParagraph APIs

13009 Fixing Link Semantics Typo

13015 Fire PlatformViewController FlutterView callbacks

13042 Add “felt clean” command

13043 Add a task runner for the Win32 embedding

13044 Support keyboard types on mobile browsers

13047 Allow embedders to specify arbitrary data to the isolate on launch.

13049 Ignore thread leaks from Dart VM in tsan instrumented builds.

13053 Set the Cirrus badge to only display status of the master branch.

13056 Put Metal renderer selection behind runtime flag and plist opt-in.

13071 [dart_aot_runner] Add support for generating dart_aot snapshots

13074 [dart_aot_runner] Add rules to generate dart_aot binaries

13082 java imports/style

13085 Print more output when gen_package fails

13086 Gen package output corrected

13088 felt: use rest args for specifying test targets

13089 cleanup gen_package.py

13090 Snapshot the felt tool for faster start-up

13091 Remove persistent cache unittest timeout

13094 Integrate more SkParagraph builder patches

13096 [dart_aot_runner] Use the host_toolchain to build kernels

13097 Update felt README

13101 [dart_aot_runner] Generate vmservice aotsnapshots

13103 [dart_aot_runner] Complete the port of dart_aot_runner

13121 Change IO thread shader cache strategy

13122 refactoring chrome_installer

13123 Upgrades the ICU version to 64.2

13124 Allow embedders to specify a render task runner description.

13125 add the dart:__interceptors library to the dart sdk

13126 [frontend_server] Include bytecode generation in the training run.

13143 Add flutter_tester binary to the CIPD package

13144 Document //flutter/runtime/dart_vm

13151 Remove incomplete static thread safety annotations.

13153 Make the Dart isolate constructor private.

13154 Fix an output file path for the frontend server package_incremental script

13157 Fix type error in SkVertices

13159 Move surface-based SceneBuilder implementation under surface/

13162 Document //flutter/runtime/dart_isolate.h

13175 Remove redundant call to updateEditingState in sendKeyEvent

13176 Add repeatCount to FlutterKeyEvent

13177 Update compiler to Clang 10.

13182 If we get a ‘down’ event, add that device to the active devices.

13185 Adding firefox_installer.dart

13192 Use window.devicePixelRatio in the CanvasKit backend

13193 Custom compositor layers must take into account the device pixel ratio.

13196 Document //flutter/runtime/dart_snapshot.h

13207 Wrap the text in text editing to fix selections.

13209 Preserve stdout colors of subprocesses run by felt

13212 Add trace events around custom compositor callbacks.

13218 Specify a human readable reason for an error from the embedder API.

13232 Avoid dereferencing IO manager weak pointers on the UI thread

13237 Do not attempt to drain the SkiaUnrefQueue in the destructor

13238 Allow embedders to update preferrred locales.

13239 Hold a reference to the Skia unref queue in UIDartState

13240 Update CanvasKit to 0.7.0 and flesh out painting

13241 Ignore *.obj files when gathering licenses

13242 Update harfbuzz to 2.6.2, Roll buildroot to a518e

13255 Fix NPE in accessibility bridge

13261 Updated license script to ignore testdata directories

13265 Ensure we call into Engine from the UI taskrunner in Shell::EngineHasLivePorts()

13269 Send flag modified events to the framework

13270 Add recipe changelog

13274 Fix decode feature detection in HtmlCodec

13275 Flesh out the CanvasKit backend some more

13292 Disable flaky test ShellTest_ReportTimingsIsCalled.

13295 Avoid accessing the Cocoa view on the GPU or IO task runners.

13311 [recipe] Upload opt flutter_tester

13314 Guarding EAGLContext used by Flutter

13319 Add FlutterEngineRunsAOTCompiledDartCode to the embedder API.

13321 Pass LinearTextFlag to SkFont - iOS13 letter spacing

13337 Bump dart/language_model to 9fJQZ0TrnAGQKrEtuL3-AXbUfPzYxqpN_OBHr9P4hE4C

13342 Intercept SystemSound.play platform message before it’s sent.

13345 Expose platform view ID on embedder semantics node

13360 Turn on RasterCache based on view hierarchy

13361 Expand on CanvasKit backend more

13364 [flutter_runner] Remove the checks for libdart profiler symbols

13367 Delay metal drawable acquisition till frame submission.

13391 Implement basic Picture.toImage via BitmapCanvas

13395 fix fml_unittes is not run during presubmit

13397 [flutter_runner] Don’t build far files twice

13401 Reformat BUILD.gn files to comply with the format checker presubmit script

13405 Make sure root surface transformations survive resetting the matrix directly in Flow.

13406 Fix the dry run mode of the GN format checker script

13407 Kick luci

13419 [dart_runner] Common libs need to exist for aot runner

13424 Add isRunningInRobolectricTest back

13440 Switch to Cirrus Dockerfile as CI

13444 Remove usage of yaml module from CIPD script

13448 Duplicate the directory fd in fml::VisitFiles

13451 Fix mDNS for iOS13

13460 [dart] Makes the intl services available

13461 CIPD needs the directory to be relative

13464 [recipe] Upload sky_engine to CIPD

13468 Pass the automaticallyRegisterPlugins flag to the FlutterEngine constructor in FlutterActivityTest

13478 use check_output instead of check_call

13479 Print the output

13630 Fix bug where Enter doesn’t add new line in multi-line fields

13642 Issues/39832 reland

13643 Ensure that the CAMetalLayer FBO attachments can be read from.

13649 Add ‘Cough’ test font and support multiple test fonts.

13695 Fix Class.forName unchecked call warning

13697 Moves pointer event sanitizing to engine.

13708 Ensure that the device pixel ratio is taken into account with window metrics in physical pixels.

13710 Fix picture raster cache throttling

13711 Imagefilter wrapper object

13719 Fix NPE in splash screen lookup

13727 Add line boundary information to LineMetrics.

13728 Prefer SchedulerBinding.addTimingsCallback

13731 Expose the platform view mutator stack to custom compositors.

13735 Cleanup obsolete –strong option of front-end server

13736 libtxt: pass an RTL bool flag instead of a bidiFlags enum to measureText

13742 Only specify –no-link-platform when not specifying –aot, roll dart-lang sdk

13744 Create a new picture recorder even when the embedder supplied render target is recycled.

13747 Move TextRange from the framework to dart:ui.

13760 Implement Path.computeMetrics in the CanvasKit backend

13762 Turn on RasterCache based on view hierarchy

13765 Change wordBoundary to take dynamic temporarily

13768 Add ImageFilter and BackdropFilter to CanvasKit backend

13772 Move Path and PathMetrics from canvas.dart into their own files. No delta

13780 Allow passing hot reload debugging flags through

13781 Create a WeakPtrFactory for use on the UI thread in VsyncWaiter

13782 Document the coordinate space of points in FlutterPointerEvent.

13784 Add Helvetica and sans-serif as fallback font families

13785 Fix RendererContextSwitch result check in Rasterizer::MakeRasterSnapshot

13786 Take devicePixelRatio into account when drawing shadows

13795 Adds missing comma in EngineParagraphStyle.toString()

13796 implement radial gradient in canvaskit backend

13799 Update version of dart/language_model distributed with flutter engine to latest

13803 [build] Make –engine-version flag optional

13805 Remove extra shadows from ParagraphStyle

13812 RendererContextSwitch guard flutter’s gl context rework.

13829 [dart_runner] Initialize logging and tracing

13832 Remove unused import

13848 Use Skia’s matchStyleCSS3 to find bundled asset typefaces matching a font style

13850 Fix test to account for pixel ratio transformations being framework responsibility.

13851 Implement the rest of ui.Path methods for CanvasKit

13869 Changing test runner and platform to be browser independent

13881 Change edge conditions of getLineBoundary

13902 Adding opacity -> alpha method to Color class

13903 Implement basic text rendering support in CanvasKit backend

13904 Fix withIn matcher distance function lookup

13907 allow ignoring toString, hashCode, and == in api_conform_test

13908 Made a way to turn off the OpenGL operations on the IO thread for backgrounded apps

13918 Add virtual destructor to GPUSurfaceSoftwareDelegate.

13926 Add dev_compiler and frontend_server to package uploading rule

13934 Ensure we use the base CompositorContext’s AcquireFrame method when screenshotting

13943 Made the thread checker print out the thread names on Apple platforms.

13945 Update SwiftShader to 5d1e854.

13962 Added auto-reviewer config file

13975 Refactor to passing functions by const ref

14082 add pointer data santizing in flutter web engine


We have made significant improvements in our plugins. We upgraded a set of plugins to support web development. Also, to support Add to App scenarios, we have a new set of APIs available for existing Android plugins to be upgraded to. If you are currently maintaining an Android plugin. We encourage you to check the Migrating your plugin to the new APIs documentation, and upgrade your plugins accordingly.

1984 Remove Flutterfire plugins (moved to FirebaseExtended)

2004 [cirrus] Use flutter create for all_plugins test

2009 Fix unit test for sensors

2036 video player version fix

2055 Point opensource site at new location

2084 [update] local_auth - intl version

2112 Run flutter_plugin_tools format

2141 BugFix: formatHint was meant for network streams.

2154 Use stable Flutter image as base

2161 Rename instrumentation_adapter plugin to e2e plugin

2205 s/flutter_android_lifecycle/flutter_plugin_android_lifecycle/

2230 Forbid … implements UrlLauncherPlatform

2231 [cleanup] Remove AndroidX warning

2236 Use package import to import files inside lib/ directory.

2250 Run the publish with the pub version from flutter stable

2260 Make setMockInitialValues handle non-prefixed keys

2267 Bump google_maps_flutter pubspec version to match CHANGELOG

2271 [infra] Ignore analyzer issues in CI

2280 Add google_sign_in_web plugin.

Plugin: Android Alarm Manager

We added the ability to get id in the callback in the Android Alarm Manager plugin.

1985 [android_alarm_manager] Added ability to get id in the callback

Plugin: Android Intent

We made several improvements in the Android Intent plugin including adding the ability to pass intent flags (contributed by a community member!), and upgrading it to the new plugin API.

2000 [android_intent] add flags option

2045 [android_intent] Add action_application_details_settings

2143 [android_intent] Migrate to the new embedding

2188 [android_intent] Bump the Flutter SDK min version

2202 [android_intent] componentName must be provided before resolveActivity is called

2221 [android_intent]remove AndroidX constraint

2268 [android_intent] Add missing DartDocs

Plugin: Battery

General bug fix in the Battery plugin.

2189 [battery] relax the example app minimal required Flutter version

Plugin: Camera

We upgraded the Camera plugin to the new plugin API, and made some bug fixes.

2057 [Camera] Fixes NullPointerException

2123 [camera] Fix event type check

2219 [camera]remove androidx constraint

Plugin: Connectivity

General bug fixes in the Connectivity plugin.

2212 [connectivity]remove AndroidX constraint

2262 [connectivity] add more documentations, delete example/README

Plugin: e2e

General bug fixes in the e2e plugin.

2022 [instrumentation_adapter] Update README instructions

2023 [instrumentation_adapter] update boilerplate to use @Rule instead of FlutterTest

2024 [instrumentation_adapter] update CODEOWNERS

2051 [instrumentation_adapter] update for release

2075 [instrumentation_adapter] Migrate example to AndroidX

2178 [e2e] update README

2190 [e2e] Update to support new embedder

2233 [e2e] update README

Plugin: Google Maps Flutter

We have made several improvements in the Google Maps plugin including adding support for displaying the traffic layer.

1702 [google_maps_flutter]Marker drag event

1767 [google_maps_flutter] Adds support for displaying the traffic layer

1784 [google_maps_flutter] Allow (de-)serialization of CameraPosition

1933 [google_maps_flutter] Avoid unnecessary redraws

2053 [google_maps_flutter] Fix analyzer failures relating to prefer_const_constructors

2065 [google_maps_flutter] Prefer const constructors.

2076 [google_maps_flutter] Clone cached elements in GoogleMap

2108 [google_maps_flutter] Add Projection methods to google_maps

2113 [google_maps_flutter] Avoid AbstractMethod crash

2242 [google_maps_flutter] Cast error.code to unsigned long to avoid using NSInteger as %ld format warnings.

Plugin: Google Sign In

We made some bug fixes in Google Sign in plugin. Meanwhile, we have converted it into a federated plugin to help it scale more efficiently to multiple platforms. For more information, please refer to Federated Plugin Implementation.

2059 [google_sign_in] Fix chained async methods in error handling zones

2127 [google_sign_in] Fix deprecated API usage issue by upgrading CocoaPod to 5.0

2244 [google_sign_in] Move plugin to its subdir to allow for federated implementations

2252 [google_sign_in] Handle new style URLs in GoogleUserCircleAvatar

2266 [google_sign_in] Port plugin to use the federated Platform Interface

Plugin: Image Picker

General bug fixes in the Image Picker plugin.

2070 [image_picker] swap width and height when source image orientation is left or right

2293 [image_picker]fix a crash when a non-image file is picked.

Plugin: In App Purchase

General bug fixes in the In App Purchase plugin.

2014 [In_App_Purchase] Avoids possible NullPointerException with background registrations.

2016 [In_App_Purchase] Improve testability

2027 [in_app_purchase] Remove skipped driver test

2215 [in_app_purchase] remove AndroidX constraint

Plugin: Local Auth

General bug fixes in the Local Auth plugin.

2047 [local_auth] Avoid user confirmation on face unlock

2111 [local_auth] Api to stop authentication

Plugin: Package Info

General bug fixes in the Package Info plugin.

2218 [package_info]remove AndroidX constraint

Plugin: Path Provider

In the Path Provider plugin, we added getApplicationLibraryDirectory, which is contributed by a community member!

1953 [path_provider] add getApplicationLibraryDirectory

1993 [pathprovider] Fix fall through bug

2288 [path_provider] Add missing DartDocs

Plugin: Share

Documentation update in the Share plugin.

2297 [share] README update

Plugin: Shared Preferences

General bug fixes in the Shared Preferences plugin.

2241 [Shared_preferences]suppress warnings

2296 [shared_preferences] Add missing DartDoc

Plugin: Url Launcher

We upgraded the Url Launcher plugin to the new plugin API, and made some bug fixes. Meanwhile, we have converted the Url launcher into a federated plugin to help it scale more efficiently to multiple platforms. For more information, please refer to Federated Plugin Implementation.

2038 [url_launcher] Removed reference to rootViewController during initialization

2136 [url_launcher_web] Fix README.md pubspec example

2217 [url_launcher] Add url_launcher_platform_interface package

2220 [url_launcher]remove AndroidX constraint

2228 [url_launcher] Use url_launcher_platform_interface to handle calls

2237 [url_launcher] Migrate url_launcher_web to the platform interface

2274 [url_launcher] DartDoc and test improvements

Plugin: Video Player

We upgraded the Video Player plugin to the new plugin API, and made some bug fixes. Meanwhile, we have converted it into a federated plugin to help it scale more efficiently to multiple platforms. For more information, please refer to Federated Plugin Implementation.

1813 [video-player] add support for content uris as urls

1998 [video_player] Fix deprecated member use

2124 [video_player] Move [player dispose] to onUnregistered

2158 [video_player] Basic test for VideoPlayerController initialization

2273 [video_player] Add platform interface

2286 [video_player] Improve DartDocs and test coverage

Plugin: Webview Flutter

We upgraded the Webview Flutter plugin to the new plugin API, and made some bug fixes.

1996 [webview_flutter] Allow underscores anywhere for Javascript Channel name

2257 [webview_flutter] Add async NavigationDelegates


Flutter tooling is another big investment in this release. We launched a new version of DartPad that allows you to play with Flutter directly in your browser without installing anything, released a new feature “Hot UI” (in preview) that allows you to interact with widgets directly in the IDE, enhanced Dart DevTools with a new visual layout view, enabled simultaneous multi-device debugging in Visual Studio Code, and added support for “golden” image testing.

In addition to the PRs listed below, please also check out the following releases for the IntelliJ and Android Studio Flutter plugin, the VS Code Flutter plugin and Dart DevTools:

VS Code

Flutter IntelliJ and Android Studio plugin


Tooling PRs

37508 build bundle with assemble

37642 Unit test for build.dart::GenSnapshot

37832 add –exit and –match-host-platform defaults to devicelab runner

37845 echo error messages to stderr

38560 refactor cocoapods validator to detect broken install

38576 flutter_tools/version: git log.showSignature=false

38632 Flutter Plugin Tool supports multi-platform plugin config

38654 [flutter_tool] Remove some async file io

38869 Store file hashes per build configuration.

38894 [flutter_tool] Move http request close under try-catch

38907 Throw error when hot reload enters bad state

38920 [flutter_tool] Handle crashes from doctor validators

38925 [flutter_tool] Only send one crash report per run

38932 Add build warning for non-debug desktop builds

39000 Dont throw StateError when calling assemble

39005 [flutter_tool] Teach crash reporter about HttpException

39013 Update package versions to latest

39052 Make forward calls run interactively

39136 [flutter_tool] Some additional input validation for ‘version’

39140 Move commands into their own shard

39147 Downgrade the AndroidX warning

39274 Use output dir instead of specific paths in assemble rules

39280 [flutter_tool] Use a timeout for xcode showBuildSettings

39358 surface errors from build runner

39445 [flutter_tool] Add onError callback to asyncGuard. Use it in Doctor

39524 Register flutterVersion service in flutter_tools.

39530 keep symbols for profile

39541 Handle single unsupported device

39555 Use feature flags to control build command visibility

39558 Filter error message from skip build script checks

39579 [flutter_tools] Add a timeout to another showBuildSettings command

39654 Use persisted build information to automatically clean old outputs

39699 Detecting when installing over MingW’s Git Bash, fixing paths

39781 Add lib/generated_plugin_registrant.dart to gitignore

39782 Allow specifying a project for Xcode getInfo

39899 [flutter_tool] process.dart cleanup

39997 Remove visibleForTesting annotation; this constructor is used outside…

40029 [BUG] Process all children of intent-filter instead of just the first one to identify default activity

40131 ensure we use pub from flutter SDK

40159 [flutter_tool] Kill a timing-out process before trying to drain its streams

40171 Place hot reload artifacts in a temp directory

40195 Make Swift plugin template swift-format compliant

40210 make sure we launch with dwds

40259 remove io and isolate from libraries

40366 Place existing dill into hot reload temp directory to boost initialization time

40368 ensure dart2js does not compile unsupported packages

40397 Adds list required components when VS is not installed

40410 Remove fluter tool usage of protobuf

40435 [flutter_tool] Remove the synchronous -showBuildSettings

40472 Dont kill other processes when starting desktop application

40783 ensure debug builds are only accessible through run

40795 Update toolchain description to request the latest version

40968 add missing trailing commas in flutter_tools

40988 [flutter_tool] Report rss high watermark in command analytics events

41224 fix flutter error report correct local widget

41304 [flutter_tools] Allows adding multiple signal handlers

41401 Flutter build bundle without –precompiled should always perform a debug build.

41406 Retry devfs uploads in case they fail.

41424 Don’t update last compiled time when compilation is rejected

41447 Switch to assemble API for dart2js

41493 [flutter_tool] Report to analytics when the tool is killed by a signal

41514 Ensure we find dart.exe on local engines

41519 Make desktop stopApp only apply to processes Flutter started

41583 Add debugging option to write vmservice address to file after starting

41610 track unused inputs in build_runner

41621 change logging in mDNS discovery to verbose-mode only

41652 [flutter_tools] Add more info to pub get failure event

41687 Use processManager.run() instead of manually capturing streams in test_utils getPackages()

41697 Handle missing .packages file in the flutter tool for prebuilt artifacts

41735 handle empty entry in asset list and add more explicit validation

41751 Add support for downloading x86 JIT release artifact

41788 Reduce log verbosity by removing individual used files

41832 Plumb –enable-asserts through to frontend_server invocation in debug…

41862 Make output directory a build input

41989 Flutter doctor should require java 1.8+

42008 Restructure ProjectFileInvalidator.findInvalidated a bit

42016 [flutter_tool] Re-work analytics events to use labels and values

42026 Stop leaking iproxy processes

42028 Make ProjectFileInvalidator.findInvalidated able to use the async FileStat.stat

42187 Be more verbose when pub fails

42209 Add error logging to flutter generate

42243 Improve trailing whitespace message

42252 catch argument error from Make

42353 Add –cache-sksl flag to drive and run

42354 Pass -Ddart.developer.causal_async_stacks=true to frontend_server invocations.

42364 Wrap dwds in async guard, only catch known error types

42373 Switch build commands to use process utils

42376 Add option to precache unsigned mac binaries.

42471 Pass build mode-specific bytecode generation options to frontend_server.

42476 Refactor BuildMode into class, add jit_release configuration

42491 Extra defensive programming for pub modification time assert

42538 [flutter_tool] Improve yaml font map validation

42597 Deflake wildcard asset test

42655 resident_web_runner doesn’t close debug connection

42656 Catch appInstanceId error

42668 dispose devices on cleanupAtFinish() for run_cold.dart

42698 Ensure we stop the status when browser connection is complete

42791 fix type error in manifest asset bundle

42813 Fix NPE in Chrome Device

42972 Do not produce an error when encountering a new type in a service response.

42977 switch dart2js build to depfile, remove Source.function

43016 ensure we can disable –track-widget-creation in debug mode

43022 Enable dump-skp-on-shader-compilation in drive

43042 add samsungexynos7570 to list of known physical devices

43080 Indent Kotlin code with 4 spaces

43180 Adding missing break in plugin validation check

43217 [flutter_tool] Update analytics policy, send event on disable

43219 Add devfs for incremental compiler JavaScript bundle

43225 Catch io.StdinException from failure to set stdin echo/line mode

43281 Add compiler configuration to support dartdevc target

43292 initial bootstrap script for incremental compiler support

43381 [flutter_tool] Use engine flutter_runner prebuilts

43390 catch ChromeDebugException from dwds

43401 Handle permission error during flutter clean

43402 Handle format error from vswhere

43403 Handle version and option skew errors

43436 Handle onError callback with optional argument

43448 Don’t html-escape in the plugin registrant templates.

43471 flip track widget creation on by default

43544 Catch AppConnectionException

43546 Alias upgrade-packages => update-packages

43577 set trace to true for desktop builds

43586 Ensure Chrome is closed on tab close

43598 Catch failed daemon startup error

43599 catch failure to parse FLUTTER_STORAGE_BASE_URL

43602 Don’t indefinitely persist file hashes, handle more error conditions

43667 Added a null check for ranges in the sourceReport map.

43725 Add reloadMethod RPC

43753 pass –no-gen-bytecode to aot kernel compiler invocations

43764 Update create.dart

43767 check if libimobiledevice executables exist

43800 de-flake logger test

43862 Ensure target platform is passed is always passed

43870 check for instanceof instead of runtimeType

43907 Serve correct mime type on release dev server

43908 remove no-gen-bytecode flag

43945 Remove Source.behavior, fix bug in depfile invalidation

44017 Asset server fix for sourcemaps

44027 Allow specifying device-vmservice-port and host-vmservice-port

44032 Copy chrome preferences to seeded data dir

44052 Remove flutter_tool services code

44083 Add –dart-define option

44119 [flutter_tool] –flutter_runner will download the debug symbols

44146 Remove flutter.yaml migration code

44200 Make ProjectFileInvalidator injectable

44221 Use platform appropriate filepaths

44227 [flutter_tool] Screenshot command must require device only for _kDeviceType

44278 Do not pass obsolete –strong option to front-end server

44279 link platform should be true for profile

44360 [flutter_tool] Stream artifact downloads to files

44447 implicit-casts:false on flutter_tools/lib

44481 Provide specific field to accept depfiles in target class

44488 Refactorings to testbed.run and testbed.test

44574 Print a message when modifying settings that you may need to reload IDE/editor

44608 Reduce some direct package:archive usage

44753 Always link desktop platforms

44868 Catch and display version check errors during doctor

44933 [flutter_tool] Don’t crash when failing to delete downloaded artifacts

44966 Don’t log stack traces to console on build failures

45011 catch IOSDeviceNotFoundError in IOSDevice.startApp()

45153 implicit-casts:false on flutter_tools

45236 Improve time to development by initializing frontend_server concurrently with platform build

45239 implicit-casts:false in fuchsia_remote_debug_protocol

45303 Allow unknown fields in pubspec plugin section

45317 de-null dartDefines in daemon mode

45319 catch parse error from corrupt config

45364 Allow a no-op default_package key for a plugin platform

45407 Don’t crash if the tool cannot delete asset directory

46011 [flutter_tool] Do not continue with a no-op ‘upgrade’

Full PR List

See the full list of merged PRs for the 1.12 release.