Hello and welcome to another stable release of Flutter. So far this year, we’ve been right on target with one stable release each quarter, as per our plan (well, less of a plan and more of a goal, but still, it’s been working out pretty well so far…). This release is our biggest yet, with 620 Pull Requests merged from 116 contributors. As always, the interesting PRs are listed below. And there are lots of interesting things to discuss in this release, including:
- 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!
And to be clear, when I say “we,” I mean the Flutter community as a whole. The Flutter team couldn’t possibly continue to scale as we have without all of our contributors, no matter who your employer is. Thanks everyone for your contributions!
In this release, we fixed one regression (37955 Update shader warm-up for recent Skia changes) and caused another (38167 Incremental compiler re-issuing of errors from constant evaluator). The new regression is fixed after the 1.9.1 stable release (00d14e7 [CFE] Always start constant evaluation error where we are asked to evaluate), so if you’re seeing it, you can choose a more recent build to bring it into your Flutter apps.
Breaking API Changes
We try hard not to make breaking changes, but we also don’t want to create unintuitive APIs as we move Flutter forward to new scenarios and new platforms. These are the breaking changes in this release. Please see the associated announcements so you can move your code forward.
36856 (no announcement) [Material] Implement TooltipTheme and Tooltip.textStyle, update Tooltip defaults
37341 (no announcement) hiding original hero after hero transition
Severe: Crash, Customer Critical and Performance Fixes
In Flutter, we try to add a little bit of quality to every release. This time around, we fixed several severe issues, including crashes, customer critical issues and performance issues.
34907 Fixed LicensePage to close page before loaded the License causes an error
35223 Navigator pushAndRemoveUntil Fix
36097 Fix nested scroll view can rebuild without layout
37033 fix debug paint crash when axis direction inverted
37254 Clamp Scaffold’s max body height when extendBody is true
34298 Preserving SafeArea : Part 2
37718 Adding physicalDepth to MediaQueryData & TestWindow
35297 Fix the first frame logic in tracing and driver
This release also brings with it two new Material widgets: the ToggleButtons widget (called a segmented control on iOS) and a ColorFilter widget (described below in the Text & Accessibility section). To see these widgets in action, check out short ToggleButtons and ColorFilter samples. Also, the SelectableText widget allows the user to select read-only text.
34599 [Material] ToggleButtons
34019 Selectable Text
35207 refactor out selection handlers
36030 [Material] Implement TooltipTheme and Tooltip.textStyle, fix Tooltip debugLabel, update Tooltip defaults
36411 Implement InputDecorationTheme copyWith, ==, hashCode
36856 [Material] Implement TooltipTheme and Tooltip.textStyle, update Tooltip defaults
36963 Add margins to tooltips
37266 Change the value of kMaxUnsignedSMI for the Web
37341 hiding original hero after hero transition
37492 Drawer edge drag width improvements
macOS Catalina Support
With the release of macOS Catalina just around the corner, we’ve made sure that our tooling continues to work smoothly as you migrate to Catalina, iOS 13 and Xcode 11. I should note that you’ll want to upgrade to the Flutter 1.9.1 stable release before upgrading to Catalina. The other order works, too, but you’ll see an error when you do it that way (the error is benign, but still…).
38325 refactor flutter upgrade to be 2 part, with the second part re-entrant
cd70b Use MAP_JIT when doing an mmap for executable pages (needed for macOS Catalina).
38662 Change from using defaults to plutil for Plist parsing
2856 Update “Getting Started” path setup to support zsh shell (macOS Catalina support)
2857 Update “iOS Setup” page to reflect Xcode 11 UI update
37733 Support macOS Catalina-style signing certificate names
10010 Use simarm_x64 when targeting arm
37407 Remove multi-arch check in iOS builds
37445 Switch iOS gen_snapshot from multi-arch binary to multiple binaries
37647 Change priority of gen_snapshot search paths
With over 50 PRs in this release, iOS support continues to be a big focus for Flutter, including an iOS 13 scrollbar implementation (that includes long-press, drag-from-right and vibration feedback support), an update to the CupertinoSwitch widget to match iOS 13 and continued experimentation with bitcode.
35829 iOS 13 scrollbar
37724 iOS 13 scrollbar vibration
36087 Update visual style of CupertinoSwitch to match iOS 13
38587 Improve bitcode check
36471 Enable bitcode compilation for AOT
36093 Reland bundle ios deps
34676 Enable selection by default for password text field and expose api to…
34723 CupertinoTextField vertical alignment
35303 fix default artifacts to exclude ios and android
35307 Clean up host_app_ephemeral Profile build settings
35731 Keep LLDB connection to iOS device alive while running from CLI.
35749 add iOS build benchmarks
35756 Remove @objc inference build setting
35763 UIApplicationLaunchOptionsKey -> UIApplication.LaunchOptionsKey
35833 Disable CocoaPods input and output paths in Xcode build phase for ephemeral add-to-app project
36174 [cupertino_icons] Add glyph refs for brightness #16102
36194 Keep LLDB connection to iOS device alive while running from CLI.
36498 Clean up host_app_ephemeral_cocoapods Profile build settings
36793 Vend Flutter module App.framework as a local CocoaPod pod to be installed by a host app
36887 Fix thumb size calculation
37026 Add support for the Kannada (kn) locale
37048 use SizedBox instead of Container for building collapsed selection
37276 Make podhelper.rb a template to avoid passing in the module name
37319 resizeToAvoidBottomInset Cupertino without NavBar
37449 If xcode_backend.sh script fails or substitute variables are missing, fail the host Xcode build
37738 Use relative paths when installing module pods
37809 Add autofocus parameter to widgets which use Focus widget internally
37906 Always install the ephemeral engine copy instead of fetching from CocoaPods specs
38593 Fix text scale factor for non-content components of Cupertino scaffolds
38629 Handle case of a connected unpaired iOS device
38645 Rename iOS arch for macOS release mode (macOS release mode 2 of 3)
9075 IOS Platform view transform/clipping
9464 Added shebangs to ios unit test scripts.
9478 iOS PlatformView clip path
9491 Purge caches on low memory on iOS
9636 Added shebangs to ios unit test scripts. (#9464)
9667 iOS platform view opacity
9722 Forwards iOS dark mode trait to the Flutter framework (#34441).
9819 Allow for dynamic thread merging on IOS for embedded view mutations
9952 ios: Fixed the callback for the first frame so that it isn’t predicated on having a splash screen.
10186 Ensure debug-mode apps are always attached on iOS.
10381 Fix empty composing range on iOS
10386 Don’t use DBC for hot-reload on iOS.
10645 Don’t use DBC for hot-reload on iOS.
10656 fix iOS keyboard crash : -[__NSCFString substringWithRange:], range o…
10662 bump local podspec’s ios deployment target version from 7.0 to 8.0
10777 Manually roll Skia to pull in iOS armv7 build failure fix.
10791 Re-lands platform brightness support on iOS
10820 iOS JIT support and enhancements for scenarios app
10949 Fix iOS references to PostPrerollResult
11006 On iOS report the preferred frames per second to tools via service protocol.
The biggest addition to Android this release is support for a new flutter command: ‘flutter build aar’. This new build command works just like ‘flutter build apk’ or ‘flutter build appbundle’, but for plugins and module projects. By building the plugins as AARs, the Android Gradle plugin can use Jetifier to translate support libraries into AndroidX libraries for all the plugin’s native code, which reduces the error rate when using AndroidX in apps.
35217 Add flutter build aar
36732 Flutter build aar
10778 Build JARs containing the Android embedding sources and the engine native library
34573 Ensures flutter jar is added to all build types on plugin projects
36695 Android visible password input type support
36805 Allow flavors and custom build types in host app
37194 [flutter_tool] More gracefully handle Android sdkmanager failure
37405 Add .android/Flutter/flutter.iml to module template.
37752 Remove dead flag gradle-dir in flutter config
9206 Android Embedding Refactor PR31: Integrate platform views with the new embedding and the plugin shim.
9360 Simplify loading of app bundles on Android
9476 fix NPE when a touch event is sent to an unknown Android platform view
9501 [android] External textures must be rescaled to fill the canvas
9525 Android Embedding Refactor PR36: Add splash screen support.
9895 Android Embedding PR37: Separated FlutterActivity and FlutterFragment via FlutterActivityAndFragmentDelegate
9999 Add support for Android’s visible password input type
10250 Android Embedding Refactor 38: Removed AssetManager from DartEntrypoint.
10413 Pass Android Q insets.systemGestureInsets to Window
10424 Fix deprecation warnings in the Android embedding
10481 Android embedding refactor pr40 add static engine cache
10771 Don’t use gradle daemon for building
11001 Avoid dynamic lookups of the engine library’s symbols on Android
11015 Remove the output directory prefix from the Android engine JAR filename
Of course, the Material design language also continues to be a major focus for Flutter.
34869 [Material] Properly call onChangeStart and onChangeEnd in Range Slider
34872 [Material] Support for hovered, focused, and pressed border color on OutlineButtons
34906 Fix unused [applicationIcon] property on [showLicensePage]
34932 Added onChanged property to TextFormField
35075 Allow for customizing SnackBar’s content TextStyle in its theme
35282 Add Container fallback to Ink build method
35496 [Material] Text scale and wide label fixes for Slider and Range Slider value indicator shape
35499 Added MaterialApp.themeMode to control which theme is used.
35560 Support for elevation based dark theme overlay color in the Material widget
35878 Add flag to use root navigator for showModalBottomSheet
36028 Fix slider preferred height
36088 Add PopupMenuTheme to enable theming color, shape, elevation, text style of Menu
36409 Add searchFieldLabel to SearchDelegate in order to show a custom hint
36880 [Material] Create material Banner component
37038 Update SnackBar to the latest Material specs.
37259 [Material] Add support for hovered, pressed, focused, and selected text color on Chips.
37269 [Material] FAB refactor - remove unnecessary IconTheme
37355 Added ThemeData.from() method to construct a Theme from a ColorScheme
37403 add ontap to textformfield
37436 Hide text selection handle after entering text
37556 [Material] Make RawChip.selected non-nullable.
37636 Add CheckboxListTile checkColor
37715 Fix markdown link format
37825 Automatic focus highlight mode for FocusManager
37870 remove Header flag from BottomNavigationBar items
37877 Adds DefaultTextStyle ancestor to Tooltip Overlay
37882 Add dense property to AboutListTile
38467 [Material] Add splashColor to FAB and FAB ThemeData
38621 [Material] Create theme for Dividers to enable customization of thickness
38636 Adds the arrowColor option to UserAccountsDrawerHeader (#38608)
Text & Accessibility
The biggest change in text & accessibility for this release is the new ColorFilter support, which enables you to recolor an entire widget tree according, for example, to adjust your app for users with red/green color blindness. To see it in action, check out this ColorFilter sample.
35468 Add colorFilterLayer/Widget
9641 Let pushColorFilter accept all types of ColorFilters
9668 Refactor ColorFilter to have a native wrapper
9789 fix ColorFilter.matrix constness
34515 OutlineInputBorder adjusts for borderRadius that is too large
35100 Add handling of ‘TextInput.clearClient’ message from platform to framework (#35054).
35219 Text selection menu show/hide cases
35493 Do not use ideographic baseline for RenderPargraph baseline
36974 Multiline Selection Menu Position Bug
37042 Fix selection menu not showing after clear
38573 Clamp scrollOffset to prevent textfield bouncing
35487 Fix RenderFittedBox when child.size.isEmpty
36243 Allow semantics labels to be shorter or longer than raw text
36303 Add sync star benchmark cases
37158 Fix Textfields in Semantics Debugger
37828 have android_semantics_testing use adb from ENV provided android sdk
Web (tech preview)
Work continues on adding to the technical preview of web platform support to Flutter in this release, including a flag to tell if an app is running on the web. To see it in action, check out main.dart in the flutter_mazegen sample. To learn more, see Flutter for web.
36135 add a kIsWeb constant to foundation
34252 Integrate dwds into flutter tool for web support
34896 Allow multi-root web builds
35221 Twiggle bit to exclude dev and beta from desktop and web
36297 Add multi-line flag to semantics
36465 Use FlutterFeatures to configure web and desktop devices
36548 Fix the web builds by reverting version bump of build_modules
36549 fix number encoding in message codecs for the Web
37515 Upstream web support for IterableProperty
37637 don’t call Platform.operatingSystem in RenderView diagnostics
37638 [web][upstream] Fix debugPrintStack for web platform
37658 fix windows path for dwds/web builds
37712 [web][upstream] Optimize InactiveElements deactivation
37812 [web][upstream] Don’t register exit/saveCompilationTrace for web platform since they are not available
37815 Restructure resident web runner usage to avoid SDK users that don’t support dwds
38499 Update build web compilers and configure libraries
We continue to move forward with the experimental support for the desktop platform in Flutter. If you’d like to take part in the experiment, see Flutter Desktop shells.
32770 Dismiss modal with any button press
34660 Add –target support for Windows and Linux
34712 Fix FocusTraversalPolicy makes focus lost
34752 [linux] Receives the unmodified characters obtained from GLFW
35495 mark windows and macos chrome dev mode as flaky
36197 Fix windows, exclude widgets from others
36722 Skip flaky test windows
36784 [flutter_tool] Improve Windows flutter clean error message
36845 Improve Windows build failure message
36987 Flutter assemble for macos take 2!
37211 Don’t enable scroll wheel when scrolling is off
37342 Fix mouse region crash when using closures
37344 Fix mouse region double render
37351 fix errors caught by roll of macOS assemble
37365 only build macOS kernel in debug mode
37425 Support for macOS release mode (1 of 3)
37509 Use macOS ephemeral directory for Pod env script
37664 Partial macOS assemble revert
37891 Focus debug
38651 Update the macOS Podfile template platform version
9654 Begin separating macOS engine from view controller
9672 Add FLEDartProject for macOS embedding
9745 Fix windows test by not attempting to open a directory as a file.
9799 Update buildroot to c4df4a7b to pull in MSVC 2017 Update 9 on Windows.
9835 [Windows] Alternative Windows shell platform implementation
9953 [macos] Add reply to binary messenger
10009 [macos] Revert check on FlutterCodecs and refactor message function]
10189 [macos] Reland function refactor
11010 Rename macOS FLE* classes to Flutter*
36546 Unskip date_picker_test on Windows as underlying issue 19696 was fixed.
The core framework for Flutter saw several important features in this release, including support for an additional 24 new locales (ranging from Afrikaans to Zulu).
36589 Update Localizations: added 24 new locales (reprise)
33936 New parameter for RawGestureDetector to customize semantics mapping
34202 Remove _debugWillReattachChildren assertions from _TableElement
34626 AsyncSnapshot.data to throw if error or no data
34895 Remove flutter_tools support for old AOT snapshotting
34919 Remove duplicate error parts
35132 Reduce allocations by reusing a matrix for transient transforms in _transformRect
35143 More HttpClientResponse Uint8List fixes
35149 More HttpClientResponse implements Stream
35232 New benchmark: Gesture semantics
35233 Attempt skipping coverage shard if tools did not change
35245 More preparation for HttpClientResponse implements Uint8List
35246 attempt to not skip coverage on post commit
35263 remove unnecessary ..toList()
35280 benchmarkWidgets.semanticsEnabled default false.
35288 Apply coverage skip math correctly
35408 Remove print
35482 Use the new service protocol message names
35491 Include tags in SemanticsNode debug properties
35646 Prepare for Socket implements Stream
35725 Update annotated region findAll implementation to use Iterables directly.
35750 use sentence case in error message titles
35762 Refactor keymapping for resident_runner
35828 Cleanup widgets/sliver_persistent_header.dart with resolution of dart-lang/sdk#31543
35913 Change focus example to be more canonical (and correct)
35932 Upgraded framework packages with ‘flutter update-packages –force-upgrade’.
35979 Optimizes gesture recognizer fixes #35658
36262 Prevents infinite loop in Table._computeColumnWidths
36302 Issues/30526 gc
36333 fix sliver fixed pinned appbar
36396 Optimize the transformRect and transformPoint methods in matrix_utils.
36482 Sped up shader warmup by only drawing on a 100x100 surface
36493 Fixes sliver list does not layout firstchild when child reordered
36503 Disabling Firebase Test Lab smoke test to unblock autoroller
36698 fixes iphone force press keyboard select crashes
36768 add an error count field to the Flutter.Error event
36857 Ensure user-thrown errors have ErrorSummary nodes
36867 Add reference to StrutStyle from TextStyle
36955 Extract common PlatformView functionality: Painting and Semantics
37187 use FlutterError in MultiChildRenderObjectWidget
37275 Optimize the transformRect and transformPoint methods in matrix_utils…
37479 Remove bogus code in ContainerParentDataMixin.detach
37497 Extract common PlatformView functionality: Gesture and PointerEvent
37703 PlatformViewLink, handling creation of the PlatformViewSurface and dispose PlatformViewController
37790 Doc: Image.memory only accepts compressed format
37880 reduce mac workload
38441 Fix getOffsetToReveal for growthDirection reversed and AxisDirection down or right
38463 Do not construct arguments to _focusDebug when running in non-debug modes
38639 PlatformViewLink. cached surface should be a Widget type
38686 Rename patent file
38704 Adds canRequestFocus toggle to FocusNode
38710 PlatformViewLink: Rename CreatePlatformViewController to CreatePlatformViewCallback
35335 Using custom exception class for network loading error
35574 Fix semantics for floating pinned sliver app bar
35810 SliverFillRemaining accounts for child size when hasScrollBody is false
The core engine continues to see many improvements across the board in this release.
9041 TextStyle.height property as a multiple of font size instead of multiple of ascent+descent+leading.
9089 Wire up custom event loop interop for the GLFW embedder.
9329 Fixed memory leak by way of accidental retain on implicit self
9403 Remove variants of ParagraphBuilder::AddText that are not used within the engine
9419 Has a binary messenger
9423 Don’t hang to a platform view’s input connection after it’s disposed
9424 Send timings of the first frame without batching
9431 Generate weak pointers only in the platform thread
9436 Add the functionality to merge and unmerge MessageLoopTaskQueues
9439 Eliminate unused import in FlutterView
9452 Convert RRect.scaleRadii to public method
9456 Made sure that the run_tests script returns the right error code.
9459 Remove unused/unimplemented shell constructor
9460 Fixed logLevel filter bug so that filter now works as expected.
9461 Adds API for retaining intermediate engine layers
9463 Removed unused imports in new embedding.
9466 Re-enable the Wuffs GIF decoder
9468 Manually draw remainder curve for wavy decorations
9485 Add –observatory-host switch
9486 Rework image & texture management to use concurrent message queues.
9489 Handle ambiguous directionality of final trailing whitespace in mixed bidi text
9490 fix a bug where the platform view’s transform is not reset before set frame
9493 Run benchmarks on try jobs.
9498 Notify framework to clear input connection when app is backgrounded (#35054).
9503 Improve caching limits for Skia
9506 Synchronize main thread and gpu thread for first render frame
9508 Support image filter on paint
9532 fix FlutterOverlayView doesn’t remove from superview in some cases
9556 Minimal integration with the Skia text shaper module
9561 libtxt: fix reference counting of SkFontStyleSets held by font asset providers
9585 Fix a race in the embedder accessibility unit test
9589 Fixes a plugin overwrite bug in the plugin shim system.
9590 Apply patches that have landed in topaz since we ported the runners to the engine repo
9591 Document various classes in //flutter/shell/common.
9632 Added Doxyfile.
9633 Cherry-pick fix for flutter/flutter#35291
9640 make EmbeddedViewParams a unique ptr
9642 Fix warning about settings unavailable GN arg build_glfw_shell
9651 Move the mutators stack handling to preroll
9652 Pipeline allows continuations that can produce to front
9653 External view embedder can tell if embedded views have mutated
9655 Allow embedders to add callbacks for responses to platform messages from the framework.
9660 ExternalViewEmbedder can CancelFrame after pre-roll
9661 Raster now returns an enum rather than boolean
9663 Mutators Stack refactoring
9685 fix Picture.toImage return type check and api conform test.
9698 Ensure that platform messages without response handles can be dispatched.
9713 Explain why OpacityLayer has an offset field
9717 Fixed logLevel filter bug so that filter now works as expected. (#9460)
9721 Add comments to differentiate two cache paths
9725 Make the license script compatible with recently changed Dart I/O stream APIs
9727 Add hooks for InputConnection lock and unlocking
9734 Fix backspace crash on Chinese devices
9737 Use libc++ variant of string view and remove the FML variant.
9741 Make FLEViewController’s view an internal detail
9747 Remove get engine
9750 FLEViewController/Engine API changes
9758 Include SkParagraph headers only when the enable-skshaper flag is on
9767 Un-deprecated FlutterViewController’s binaryMessenger.
9769 Document //flutter/shell/common/engine.
9772 fix objcdoc generation
9781 SendPlatformMessage allow null message value
9797 Remove breaking asserts
9808 Document FontFeature class
9809 Document //flutter/shell/common/rasterizer
9813 Made Picture::toImage happen on the IO thread with no need for an onscreen surface.
9815 Made the persistent cache’s directory a const pointer.
9816 Only release the image data in the unit-test once Skia has accepted ownership of it.
9825 In a single frame codec, release the encoded image buffer after giving it to the decoder
9828 Make the virtual display’s window translucent
9847 Started adding the engine hash to frameworks’ Info.plist.
9849 Preserve the alpha for VD content by setting a transparent background.
9850 Add multi-line flag to semantics
9851 Add a macro for prefixing embedder.h symbols
9855 Fix missing assignment to _allowHeadlessExecution
9859 Fix justify for RTL paragraphs.
9867 Fixed error in generated xml Info.plist.
9873 Add clang version to Info.plist
9875 Simplify buildtools
9890 Log dlopen errors only in debug mode
9893 Removed logic from FlutterAppDelegate into FlutterPluginAppLifeCycleDelegate
9894 Add the isMultiline semantics flag to values
9896 Capture stderr for ninja command
9901 Handle decompressed images in InstantiateImageCodec
9905 Respect EXIF information while decompressing images.
9906 Update libcxx & libcxxabi to HEAD in prep for compiler upgrade.
9919 Removed unused method.
9920 Fix caching of Locale.toString
9922 Split out lifecycle protocol
9923 Fix failure of the onReportTimings window hook test
9924 Don’t try to use unset assets_dir setting
9925 Fix the geometry test to reflect that OffsetBase comparison operators are a partial ordering
9927 Update Buildroot Version
9929 Update the exception thrown for invalid data in the codec test
9931 Fix reentrancy handling in SingleFrameCodec
9932 Exit flutter_tester with an error code on an unhandled exception
9934 Updates to the engine test runner script
9935 Fix backspace crash on Chinese devices (#9734)
9936 Move development.key from buildroot
9937 [platform view] do not make clipping view and interceptor view clipToBounds
9938 Removed PlatformViewsController if-statements from TextInputPlugin (#34286).
9939 Added hasRenderedFirstFrame() to old FlutterView for Espresso (#36211).
9948 [glfw] Enables replies on binary messenger in glfw embedder
9958 Clean up cirrus.yml file a little
9961 Fix return type of assert function in gradient_test
9977 Fix flutter/flutter #34791
9987 Update GN to git_revision:152c5144ceed9592c20f0c8fd55769646077569b
10012 Undelete used method
10021 Added a DartExecutor API for querying ## of pending channel callbacks
10056 Update .cirrus.yml
10063 Track clusters and return cluster boundaries in getGlyphPositionForCoordinates (emoji fix)
10064 Disable DartLifecycleTest::ShuttingDownTheVMShutsDownAllIsolates in runtime_unittests.
10068 Fixed memory leak with engine registrars.
10069 Enable consts from environment in DDK for flutter_web
10073 Basic structure for flutter_jit_runner far
10074 Change ParagraphBuilder to replace the parent style’s font families with the child style’s font families
10075 Change flutter runner target for LUCI
10078 One more luci fix
10109 Cache font family lookups that fail to obtain a font collection
10127 Track detailed LibTxt metrics
10128 Started linking the test targets against Flutter.
10151 [fucshia] fix name to reflect the cmx file
10155 src/third_party/dart a2aec5eb06…86dba81dec
10172 [dart_runner] Rename dart to dart runner
10176 Add suggested Java changes from flutter roll
10178 Removed unnecessary call to find the App.framework.
10179 [dart_runner] dart jit runner and dart jit product runner
10195 Allow embedder controlled composition of Flutter layers.
10235 Deprecate FlutterView#enableTransparentBackground
10242 Remove Dead Scenic Clipping Code Path.
10265 [dart-roll] Roll dart sdk to 80c4954d4d1d2a257005793d83b601f3ff2997a2
10273 Remove one last final call to AddPart()
10282 Export FFI from sky_engine.
10295 Fix memory overrun in minikin patch
10296 fix CI
10297 Ensure that the SingleFrameCodec stays alive until the ImageDecoder invokes its callback
10298 Fix red build again
10303 Make tree green for real this time, I promise.
10414 expose max depth on Window
10419 Make kernel compiler use host toolchain
10423 Fix mac gen_snapshot uploader
10430 Add copy_gen_snapshots.py tool
10477 Add #else, #endif condition comments
10479 Delete unused create_macos_gen_snapshot.py script
10485 Remove semi-redundant try-jobs.
10629 Fix engine platformviewscontroller leak
10637 Document the thread test fixture.
10644 [flutter_runner] Port: Add connectToService, wrapping fdio_ns_connect.
10652 Allow embedders to control Dart VM lifecycle on engine shutdown.
10674 When setting up AOT snapshots from symbol references, make buffer sizes optional.
10675 Improvements to the flutter GDB script
10773 Remove use of the deprecated AccessibilityNodeInfo boundsInParent API
10776 rename stub_ui to web_ui
10780 [flutter_runner] Improve frame scheduling
10781 [flutter] Create the compositor context on the GPU task runner.
10782 Update license script to handle ANGLE
10783 Make firebase test more LUCI friendly
10786 Remove 3 semi-redundant try-jobs
|10787 Change call to||AddPart||to||AddChild|
10788 Wire up a concurrent message loop backed SkExecutor for Skia.
10797 Rename artifacts so they match the Maven convention
10799 Add a test for creating images from bytes.
10808 Remove flutter_kernel_sdk dart script
10809 [dart:zircon] Porting Cache re-usable handle wait objects
10815 Return an empty mapping for an empty file asset
10816 Add firstFrameDidRender to FlutterViewController
10823 Expose isolateId for engine
10941 Report test failures in run_tests.py
10952 Change SemanticsNode#children lists to be non-null
10955 Fix format
10956 Increase the license block scan from 5k to 6k
11002 Remove a tracing macro with a dangling pointer
11004 Trace RasterCacheResult::Draw
11005 Drop firebase test from Cirrus
11011 Initialize the engine in the running state to match the animator’s default state
11012 Remove the ParagraphImpl class from the text API
11013 Remove ability to override mac_sdk_path in flutter/tools/gn
11024 Add _glfw versions of the GLFW desktop libraries
11027 Fix first frame logic
11029 Disable a deprecation warning for use of a TaskDescription constructor for older platforms
11033 remove OS version
11034 Show all license diffs
11038 Make JIT work on iPhone armv7
11040 Hide verbose dart snapshot during run_test.py
11041 Add a BroadcastStream to FrameTiming
11046 Add ccls config files to .gitignore
11052 Remove unused dstColorSpace argument to MakeCrossContextFromPixmap
11056 Sort the Skia typefaces in a font style set into a consistent order
11062 Provide a placeholder queue ID for the custom embedder task runner.
11067 Minor update to the Robolectric test harness
11068 More updates to the Robolectric test harness
11075 [dynamic_thread_merging] Resubmit only on the frame where the merge
As always, the end-to-end experience for Flutter relies heavily on its tools. With that in mind, in addition to the PRs listed below, which focus on the flutter CLI tool, you should also check out the following releases for the IntelliJ/Android Studio Flutter plugin, the VSCode Flutter plugin and Dart DevTools:
- DevTools 0.1.6 Release Notes - Sept 5, 2019
- IntelliJ Plugin M39 Release Notes - Sept 3, 2019
- VSCode Plugin 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 - 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 - 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 from the Flutter User Experience team.
32511 Rendering errors with root causes in the widget layer should have a reference to the widget
28090 Ensure that cache dirs and files have appropriate permissions
32816 Add initial implementation of flutter assemble
34624 Break down flutter doctor validations and results
34785 Tweak the display name of emulators
34794 Add emulatorID field to devices in daemon
35084 Move findTargetDevices to DeviceManager
35092 Add FlutterProjectFactory so that it can be overridden internally.
35186 Make tool coverage collection resilient to sentinel coverage data
35188 ensure test isolate is paused before collecting coverage
35192 don’t block any presubmit on coverage
35231 Fix coverage collection
35367 Add type to StreamChannel in generated test code.
35392 Add timer checking and Fake http client to testbed
35406 Refactor signal and command line handler from resident runner
35465 Mark update-packages as non-experimental
35467 Mark update-packages as non-experimental
35480 Update the help message on precache command for less confusion
35681 Disable incremental compiler in dartdevc
35765 Use public _registerService RPC in flutter_tools
35767 set targets of zero percent for tools codecoverage
35839 use pub run for create test and remove [INFO] logs
35846 move reload and restart handling into terminal
36017 Move reporting files to reporting/
36082 Add better handling of JSON-RPC exception
36084 handle google3 version of pb
36105 [flutter_tool] Catch a yaml parse failure during project creation
36109 Catch exceptions thrown by runChecked* when possible
36122 Make sure add-to-app build bundle from outer xcodebuild/gradlew sends analytics
36138 Implement feature flag system for flutter tools
36199 Don’t try to flutterExit if isolate is still paused
36208 [flutter_tool] Allow analytics without a terminal attached
36213 Use DeviceManager instead of device to determine if device supports project.
36218 release lock in flutter pub context
36237 Recommend to use the final version of CDN support for the trunk specs repo.
36240 Rearrange flutter assemble implementation
36288 Throw exception if instantiating IOSDevice on non-mac os platform
36289 FakeHttpClientResponse improvements
36318 Include flutter_runner in precache artifacts.
36327 Fix invocations of ideviceinstaller not passing DYLD_LIBRARY_PATH
36331 Minor fixes to precache help text (attempt #2)
36434 Clean up flutter driver device detection.
36481 Remove untested code
36490 [flutter_tool] Send analytics command before the command runs
36507 Bump engine version
36513 Fix flutter pub -v
36556 Fix usage test to use local usage
36564 Make sure fx flutter attach can find devices
36569 Some minor cleanup for flutter_tools
36570 Some minor fixes to the tool_coverage tool
36585 Place build outputs under dart tool
36598 Expose functionality to compile dart to kernel for the VM
36679 add line-length to flutter format command line
36727 Add missing config to create
36773 Expose build-dir config option
36774 Parameterize CoverageCollector with a library name predicate
36785 [flutter_tool] Clean up usage events and custom dimensions
36787 Check for directory instead of path separator
36832 Remove flaky check for analyzer message.
37036 Build number (part after +) is documented as optional, use entire app version if not present
37044 [flutter_tool] Make a couple file operations synchronous
37186 [flutter_tool] Usage refactor cleanup
37196 [flutter_tool] Catch ProcessException from ‘adb devices’
37198 [flutter_tool] Re-try sending the first crash report
37210 do not strip symbols when building profile
37217 hide symbols from spotlight for App.framework
37331 [flutter_tool] Add missing toString()
37345 [flutter_tool] Include the local timezone in analytics timestamp
37378 Disable xcode indexing in CI via COMPILER_INDEX_STORE_ENABLE=NO argument
37422 [flutter_tool] Additional flutter manifest yaml validation
37440 Print message when HttpException is thrown after running flutter run
37457 Find the app bundle when the flavor contains underscores
37500 Avoid killing Flutter tool process (#37471)
37512 Enable track widget creation on debug builds
37514 [flutter_tool] Remove unintended analytics screen send
37521 have xcodeSelectPath also catch ArgumentError
37595 Closes #37593 Add flutter_export_environment.sh to gitignore
37731 Add metadata to indicate if the host app contains a Flutter module
37735 Remove unused no-build flag from the flutter run command
37743 Handle thrown maps and rejects from fe server
37792 Disable the progress bar when downloading the Dart SDK via Invoke-WebRequest
37863 Expose the timeline event names so they can be used in other systems that do tracing
37871 Catch failure to create directory in cache
37900 Listen to ExtensionEvent instead of TimelineEvent
37958 Catch FormatException caused by bad simctl output
37966 Remove ephemeral directories during flutter clean
37994 Remove no-constant-update-2018, the underlying issue has been resolved.
38101 Catch filesystem exception from flutter create
38102 Fix type error hidden by implicit downcasts
38296 use common emulator/device list
38339 [flutter_tool] Flip create language defaults to swift and kotlin
38353 [flutter_tool] Observatory connection error handling cleanup
38472 [flutter_tool] Fix bug in manifest yaml validation
38486 Catch errors thrown into the Zone by json_rpc
38490 Fix publish cmd
38497 handle unexpected exit from frontend server
38575 fix rpc exception for real
38586 Don’t reload if compilation has errors
38637 [flutter_tool] Throw tool exit on malformed storage url override
38652 Kill dead code
36860 Remove Chain terse parsing
36874 Adjust phrasing of features
36884 Unbreak build_runner
Full PR List
You can see the full list of merged PRs in this release here.