Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
Flutter 3.18 beta (December 5, 2023) source code.tar.gz | 2023-12-05 | 12.8 MB | |
Flutter 3.18 beta (December 5, 2023) source code.zip | 2023-12-05 | 17.8 MB | |
README.md | 2023-12-05 | 42.1 kB | |
Totals: 3 Items | 30.6 MB | 0 |
The release of the Flutter 3.18 beta contains the changes noted below.
We’ve also included summaries of notable commits towards features and enhancements of interest. These summaries help you quickly assess what this beta has to offer and why you should use it, as well as highlight the features we’d love your feedback on and your help testing.
To try out the newest beta run:
flutter channel beta
flutter upgrade
Flutter 3.18 beta (December 5, 2023)
Flutter Framework
Notable commits
Added support for Apple system fonts
Flutter text now looks a little more compact and a little more native on iOS. For the "Text" font this will be more secure in the future against possible changes to Apple's API. For the "Display" font, this will now work correctly when it didn't before. * Refactor to use Apple system fonts by @MitchellGoodwin in https://github.com/flutter/flutter/pull/137275
Adaptive Switch
The implementation of Switch.adaptive no longer depends on the Cupertino library. Everything is handled by the Material component and there are no longer any switch properties that are not supported by the .adaptive
version. We also added support for customizing the appearance of adaptive components.
* Adaptive Switch
by @QuncCccccc in https://github.com/flutter/flutter/pull/130425
Scrolling
Flutter used to scroll twice as fast if you dragged two fingers. You can now configure the default ScrollBehavior
with MultiTouchDragStrategy.latestPointer
to get number-of-fingers-agnostic scrolling behavior. We also updated scrolling so now if you start dragging or tap while a scroll is underway the scroll stops as expected.
* Introduce multi-touch drag strategies for DragGestureRecognizer
by @xu-baolin in https://github.com/flutter/flutter/pull/136708
* Fix 2D tap to stop scrolling by @Piinks in https://github.com/flutter/flutter/pull/138442
Increased access to text widgets’ state
We added support for a MaterialStatesController
in TextField
and TextFormField
so that you can listen to MaterialState
changes.
* TextField and TextFormField can use a MaterialStatesController by @Renzo-Olivares in https://github.com/flutter/flutter/pull/133977
UndoHistory stack
We fixed a problem where the undo/redo history could disappear on Japanese keyboards, and made it so you can now modify the UndoHistory
stack.
* Add undoStackModifier
to UndoHistory
by @Renzo-Olivares in https://github.com/flutter/flutter/pull/138674
Visuals and animations
This beta includes many improvements to visuals and animations across the Flutter Framework, most notably:
* Make UnderlineInputBorder
consistent by @bernaferrari in https://github.com/flutter/flutter/pull/124153
* Introduce AnimationStyle
by @TahaTesser in https://github.com/flutter/flutter/pull/137945
* Fix sliver persistent header expand animation by @feduke-nukem in https://github.com/flutter/flutter/pull/137913
* Add ability to customize NavigationBar
indicator overlay and fix indicator shape for the overlay by @TahaTesser in https://github.com/flutter/flutter/pull/138901
Framework
The remaining Framework commits from Flutter Framework are listed below:
* Upgrade leak_tracker and remove some deps in allow list. by @polina-c in https://github.com/flutter/flutter/pull/137806
* [leak-tracking] Add more leak tracking in test/painting [#3] by @droidbg in https://github.com/flutter/flutter/pull/136170
* [web] dispatch corresponding keyup events in text editing integrations by @knopp in https://github.com/flutter/flutter/pull/136874
* Updated the nested navigation NavigationBar example by @HansMuller in https://github.com/flutter/flutter/pull/137788
* AppLifecycleListener should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137840
* InkFeature should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137793
* Reverts "[Android] Support Android 34" by @auto-submit in https://github.com/flutter/flutter/pull/137865
* Tooltip docs: Recommend setting preferBelow to false in theme by @chrisbobbe in https://github.com/flutter/flutter/pull/135879
* Send caret rect to embedder on selection update by @cbracken in https://github.com/flutter/flutter/pull/137863
* Remove unused generic type from BottomSheet by @goderbauer in https://github.com/flutter/flutter/pull/137791
* InheritedElement.removeDependent() by @s0nerik in https://github.com/flutter/flutter/pull/129210
* HeroController should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137835
* Provide a helpful error message when ColorScheme.brightness
doesn't match ThemeData.brightness
by @TahaTesser in https://github.com/flutter/flutter/pull/137611
* Update BottomNavigationBar tests for M3 by @bleroux in https://github.com/flutter/flutter/pull/136624
* Reverts "Update BottomNavigationBar tests for M3" by @auto-submit in https://github.com/flutter/flutter/pull/137948
* Cover text_selection tests with leak tracking. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137009
* ScrollActivity should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137961
* SemanticsHandle should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137960
* Added an AnimationController API doc example by @HansMuller in https://github.com/flutter/flutter/pull/137975
* Document where Curves
curves correspond to CSS easing functions by @gnprice in https://github.com/flutter/flutter/pull/137318
* Revert "Add no-shuffle to reorderable_list_test.dart" by @dnfield in https://github.com/flutter/flutter/pull/137715
* Ticker should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/137844
* Add support for color and color blendmode in FadeInImage by @prasadsunny1 in https://github.com/flutter/flutter/pull/137681
* Document additional cases by @dnfield in https://github.com/flutter/flutter/pull/137957
* [Android] Fix FlutterTestRunner.java
deprecations by @camsim99 in https://github.com/flutter/flutter/pull/138093
* Remove physicalGeometry by @goderbauer in https://github.com/flutter/flutter/pull/138103
* Add onSubmitted
and onChanged
for SearchAnchor
and SearchAnchor.bar
by @QuncCccccc in https://github.com/flutter/flutter/pull/136840
* Make it possible to disable tapping to dismiss a tooltip. by @hangyujin in https://github.com/flutter/flutter/pull/137375
* Fix text selection in SearchAnchor/SearchBar
by @Renzo-Olivares in https://github.com/flutter/flutter/pull/137636
* [Android] Support Android 34 (take 2) by @camsim99 in https://github.com/flutter/flutter/pull/137967
* Adds useRootNavigator
property to PopupMenuButton
widget. by @piedcipher in https://github.com/flutter/flutter/pull/137453
* Update analytics constructor to include FLUTTER_HOST
by @eliasyishak in https://github.com/flutter/flutter/pull/138107
* Fix [#128925] by properly setting the Android Event Source by @johnmccutchan in https://github.com/flutter/flutter/pull/138241
* GestureRecognizer should dispatch creation and disposal events. by @ksokolovskyi in https://github.com/flutter/flutter/pull/138223
* Deprecates onWillAccept and onAccept callbacks in DragTarget. by @chinmoy12c in https://github.com/flutter/flutter/pull/133691
* Docs typo: comprised -> composed by @EnduringBeta in https://github.com/flutter/flutter/pull/137896
* Upgrade leak tracker. by @polina-c in https://github.com/flutter/flutter/pull/138283
* Clean up synonyms, key code generation. by @gspencergoog in https://github.com/flutter/flutter/pull/138192
* Update DraggableScrollableSheet docs to reflect API change by @huycozy in https://github.com/flutter/flutter/pull/136471
* Finally remove analysis_options_user.yaml by @goderbauer in https://github.com/flutter/flutter/pull/138261
* Fixing typo by @peterabrahamdev in https://github.com/flutter/flutter/pull/138253
* Reland "Update framework_test.dart
to remove ButtonBar
usage and remove references from other clases (#137550) by @TahaTesser in https://github.com/flutter/flutter/pull/137753
* Add to TableCell docs by @Piinks in https://github.com/flutter/flutter/pull/138258
* Reland [SingleChildScrollView] Correct the offset pixels if it is out of range during layout by @xu-baolin in https://github.com/flutter/flutter/pull/136871
* SemanticOwner should dispatch creation and disposal events by @droidbg in https://github.com/flutter/flutter/pull/138388
* Reland VelocityTracker update (#132291) by @Piinks in https://github.com/flutter/flutter/pull/137381
* [web] skip flaky overflow_clipbehavior_none.cupertino.0.png golden check by @yjbanov in https://github.com/flutter/flutter/pull/138498
* Reverts "Reland VelocityTracker update (#132291)" by @auto-submit in https://github.com/flutter/flutter/pull/138512
* Pin package:web 0.4.0 by @srujzs in https://github.com/flutter/flutter/pull/138428
* Prepare ShortcutActivator
and ShortcutManager
to migrate to KeyEvent
from RawKeyEvent
. by @gspencergoog in https://github.com/flutter/flutter/pull/136854
* [flutter_tools] - Add queries
section to Android manifest file by @bleroux in https://github.com/flutter/flutter/pull/137207
* Reduce animations further when --no-cli-animations is set. by @Hixie in https://github.com/flutter/flutter/pull/133598
* Enable the silent flag for invalid string exceptions when building a TextSpan by @jason-simmons in https://github.com/flutter/flutter/pull/138564
* Turn off leak tracker in master to make found leaks not blocking. by @polina-c in https://github.com/flutter/flutter/pull/138567
* Enable flutter screenshot
outside Flutter project directory by @victoreronmosele in https://github.com/flutter/flutter/pull/138160
* Reverts "Introduce AnimationStyle
" by @auto-submit in https://github.com/flutter/flutter/pull/138628
* Fix NoSplash not being disposed by @LinXunFeng in https://github.com/flutter/flutter/pull/138542
* Update links and surrounding text for new main-api
docs by @parlough in https://github.com/flutter/flutter/pull/138602
* Reland update bottom navigation bar test for m3 by @bleroux in https://github.com/flutter/flutter/pull/137998
* [Reland] Introduce AnimationStyle
by @TahaTesser in https://github.com/flutter/flutter/pull/138721
* Added Features requested in [#137530] by @mhbdev in https://github.com/flutter/flutter/pull/137532
* Fix Chips with Tooltip throw an assertion when enabling or disabling by @TahaTesser in https://github.com/flutter/flutter/pull/138799
* Fix M3 Tabs Specs links by @TahaTesser in https://github.com/flutter/flutter/pull/138808
* Reland VelocityTracker update (again) by @Piinks in https://github.com/flutter/flutter/pull/138843
* Revert "Reland VelocityTracker update (again)" by @eyebrowsoffire in https://github.com/flutter/flutter/pull/138863
* Add commandHasTerminal
parameter + apple usage event + sendException
events for package:unified_analytics
by @eliasyishak in https://github.com/flutter/flutter/pull/138806
* Update the default outline color for OutlinedButton
by @QuncCccccc in https://github.com/flutter/flutter/pull/138768
* make FakeView not send Scene and semantics to the engine by @yjbanov in https://github.com/flutter/flutter/pull/138849
* Fix SliverGrid garbage collection issue by @chunhtai in https://github.com/flutter/flutter/pull/138915
* Write tests for API examples of BottomNavigationBar and IconButton by @JaspervanRiet in https://github.com/flutter/flutter/pull/138188
* Prepare for dynamically sized views by @goderbauer in https://github.com/flutter/flutter/pull/138565
* Prepare for dynamically sized views - pt. 2 by @goderbauer in https://github.com/flutter/flutter/pull/139079
* Bump DartDoc to 8.0.0 by @kallentu in https://github.com/flutter/flutter/pull/139088
* Record focus in route entry to move a11y focus to the last focused item by @hangyujin in https://github.com/flutter/flutter/pull/135771
* Migrate customer_testing to sharded tests. by @godofredoc in https://github.com/flutter/flutter/pull/138659
* Fix intrinsic width of input decorator by @neko-andrew in https://github.com/flutter/flutter/pull/138074
* Fix textScalerOf and maybeTextScalerOf documentations by @bleroux in https://github.com/flutter/flutter/pull/139123
* Fix turbulence seed for all tests with ink sparkles by @Piinks in https://github.com/flutter/flutter/pull/138757
* Fix header formatting typo in PopupMenuButton docs by @kalafut in https://github.com/flutter/flutter/pull/139084
* Added keyboardType & textInputAction props to SearchBar, SearchAnchor & SearchAnchor.bar by @piedcipher in https://github.com/flutter/flutter/pull/138553
* Ensure Icon vertically centers its icon glyph. by @LongCatIsLooong in https://github.com/flutter/flutter/pull/138937
* feature(table-widget): Added intrinsicHeight to TableCellVerticalAlignment enum. by @gbtb16 in https://github.com/flutter/flutter/pull/130264
* Added some documentation for OverlayPortal by @yiiim in https://github.com/flutter/flutter/pull/138934
* Fix comment by @gzurowski in https://github.com/flutter/flutter/pull/138973
* Implement switch
expressions in dev/
by @nate-thegrate in https://github.com/flutter/flutter/pull/139048
* Write Tests for API Examples of snack_bar.0
, elevated_button.0
, stepper.0
, radio.0
, filled_button.0
, outlined_button.0
& card.0
by @piedcipher in https://github.com/flutter/flutter/pull/138987
* Update ButtonStyleButton.scaledPadding
documentation. Migrate callers in flutter/flutter by @LongCatIsLooong in https://github.com/flutter/flutter/pull/139014
* Provide parameter to Icon and IconThemeData for they to consider the context's text scaler by @mateusfccp in https://github.com/flutter/flutter/pull/135708
* implemented leadingWidth and automaticallyImplyLeading options by @VB10 in https://github.com/flutter/flutter/pull/136165
* Simplify devicelab logic and fix tests by @Hixie in https://github.com/flutter/flutter/pull/139122
* Improve documentation of CardTheme.shape by @dumazy in https://github.com/flutter/flutter/pull/139096
* Analyze against using Stopwatches in the framework by @Piinks in https://github.com/flutter/flutter/pull/138507
* Update VelocityTracker (4) by @Piinks in https://github.com/flutter/flutter/pull/139166
* Remove deprecated PlatformMenuBar.body
by @gspencergoog in https://github.com/flutter/flutter/pull/138509
* add sourceTimeStamp to ScaleUpdateDetails by @yakagami in https://github.com/flutter/flutter/pull/135936
* Dynamic view sizing by @goderbauer in https://github.com/flutter/flutter/pull/138648
* Fix chips onDeleted
callback don't show the delete button when disabled by @TahaTesser in https://github.com/flutter/flutter/pull/137685
* Write Tests for API Examples of cupertino_text_field.0
, data_table.0
, icon_button.2
& ink_well.0
by @piedcipher in https://github.com/flutter/flutter/pull/139258
iOS
- [native assets] Tool exit on build failure by @dcharkes in https://github.com/flutter/flutter/pull/137995
- Migration for the
sendTiming
events forpackage:unified_analytics
by @eliasyishak in https://github.com/flutter/flutter/pull/138896 - Reverts "Migration for the
sendTiming
events forpackage:unified_analytics
" by @auto-submit in https://github.com/flutter/flutter/pull/139278
Web
- [#60704]: Pass cert for TLS localhost connection by @arpitgandhi9 in https://github.com/flutter/flutter/pull/106635
Tooling
- [flutter_tools] do not try to build tool from dart.sh by @christopherfujino in https://github.com/flutter/flutter/pull/129186
- Pin dart-lang/native dependencies by @dcharkes in https://github.com/flutter/flutter/pull/137601
- Fix tool exit message shown when user provides a non-list to "assets" for a deferred component by @andrewkolos in https://github.com/flutter/flutter/pull/137837
- Change cast in json parsing by @iinozemtsev in https://github.com/flutter/flutter/pull/137708
- Migration for
HotEvent
for Flutter hot runner by @eliasyishak in https://github.com/flutter/flutter/pull/137717 - Roll pub packages by @flutter-pub-roller-bot in https://github.com/flutter/flutter/pull/137862
- [flutter_tools] toolexit when using plugins with preview device by @christopherfujino in https://github.com/flutter/flutter/pull/136936
- [flutter_tools] Fix local engine preview device by @christopherfujino in https://github.com/flutter/flutter/pull/138046
- [flutter_tools] disable flutter build AAR for plugins by @christopherfujino in https://github.com/flutter/flutter/pull/137878
- Roll pub packages by @flutter-pub-roller-bot in https://github.com/flutter/flutter/pull/138114
- prevent tool crash when
IntelliJValidatorOnMac
encounters an installation with a missingCFBundleIdentifier
by @andrewkolos in https://github.com/flutter/flutter/pull/138095 - Improved Java version parsing by @reidbaker in https://github.com/flutter/flutter/pull/138155
- Roll pub packages by @flutter-pub-roller-bot in https://github.com/flutter/flutter/pull/138163
- Drop unnecessary URI encoding of websocket url in listener by @dnfield in https://github.com/flutter/flutter/pull/137969
- Prepare the analyze_once test for removal of analysis_options_user support by @srawlins in https://github.com/flutter/flutter/pull/138229
CommandResultEvent
migrated by @eliasyishak in https://github.com/flutter/flutter/pull/138165- [macOS] Suppress Xcode 15 createItemModels warning by @cbracken in https://github.com/flutter/flutter/pull/138243
- Fixes vscode path installed via snap by @KristijanZic in https://github.com/flutter/flutter/pull/136997
- Consume flutter.js from the engine artifacts. by @eyebrowsoffire in https://github.com/flutter/flutter/pull/137113
- Unified analytics migration for
CodeSizeAnalysis
by @eliasyishak in https://github.com/flutter/flutter/pull/138351 - Catch error for missing directory in
FontConfigManager
by @eliasyishak in https://github.com/flutter/flutter/pull/138496 - Just use string interpolation for ws url for tests by @dnfield in https://github.com/flutter/flutter/pull/138235
- Bump cupertino_icons to 1.0.6 by @lsaudon in https://github.com/flutter/flutter/pull/136962
- Improves output file path logic in Android analyze by @chunhtai in https://github.com/flutter/flutter/pull/136981
- Fix file deletion crash in BuildIOSArchiveCommand.runCommand by @vashworth in https://github.com/flutter/flutter/pull/138734
- In
flutter doctor -v
, when JRE is too out-of-date to runsdkmanager
, print a helpful error message by @andrewkolos in https://github.com/flutter/flutter/pull/138762 - [flutter_tools] Fix bad state future already completed in flutter logs by @christopherfujino in https://github.com/flutter/flutter/pull/138517
- Edge case on flutter/flutter/issues/135402 with test by @reidbaker in https://github.com/flutter/flutter/pull/138814
- Give an actionable error message when a Pod requires a higher minimum OS version by @stuartmorgan in https://github.com/flutter/flutter/pull/138097
- Update Android app project template to apply Kotlin Gradle plugin declaratively by @bartekpacia in https://github.com/flutter/flutter/pull/139006
- Add type validation to non-template .arb file parsing logic by @andrewkolos in https://github.com/flutter/flutter/pull/139035
- [flutter_tools] fix instructions to disable CLI animations by @christopherfujino in https://github.com/flutter/flutter/pull/139094
- Roll dependencies by @Hixie in https://github.com/flutter/flutter/pull/139203
Documentation
- Check sample links for malformed links by @gspencergoog in https://github.com/flutter/flutter/pull/137807
Other Changes
- Roll flutter gallery version forward. by @jonahwilliams in https://github.com/flutter/flutter/pull/137846
- [benchmarks] disable partial repaint for multiple backdrop blur iOS macrobenchmarks. by @jonahwilliams in https://github.com/flutter/flutter/pull/137902
- Move Skia new_gallery_transition_perf on a02 from staging to prod by @zanderso in https://github.com/flutter/flutter/pull/138013
- Use no-response from cocoon. by @godofredoc in https://github.com/flutter/flutter/pull/138037
- Reverts "Use no-response from cocoon." by @auto-submit in https://github.com/flutter/flutter/pull/138042
- Run a couple of iOS tests in presubmit by @vashworth in https://github.com/flutter/flutter/pull/138089
- Remove fuchsia mac version by @CaseyHillers in https://github.com/flutter/flutter/pull/138101
- Use specific version of mac_toolchain by @vashworth in https://github.com/flutter/flutter/pull/138115
- Move Mac_build_test flutter_gallery__transition_perf_e2e_ios to staging by @vashworth in https://github.com/flutter/flutter/pull/138196
- Use merge-base in find_commit.dart by @natebosch in https://github.com/flutter/flutter/pull/138033
- Only run tests on macOS 12 by @vashworth in https://github.com/flutter/flutter/pull/138260
- Add a DevTools section to CONTRIBUTING.md by @kenzieschmoll in https://github.com/flutter/flutter/pull/137193
- Run all tests in examples/ by @goderbauer in https://github.com/flutter/flutter/pull/138374
- Bump github/codeql-action from 2.22.5 to 2.22.6 by @dependabot in https://github.com/flutter/flutter/pull/138438
- Bump dessant/lock-threads from 4.0.1 to 5.0.0 by @dependabot in https://github.com/flutter/flutter/pull/138437
- Adding new packages to the first-party package issue template by @huycozy in https://github.com/flutter/flutter/pull/138540
- Update release.yml by @johnpryan in https://github.com/flutter/flutter/pull/138561
- test owners: cyanglaz -> vashworth by @cyanglaz in https://github.com/flutter/flutter/pull/138726
- Bump dartdoc to 7.0.2 by @srawlins in https://github.com/flutter/flutter/pull/138760
- Add dartdoc warnings by @goderbauer in https://github.com/flutter/flutter/pull/138766
- Add mhbdev to AUTHORS by @mhbdev in https://github.com/flutter/flutter/pull/138311
- Fix team-infra label in dependabot by @goderbauer in https://github.com/flutter/flutter/pull/138917
- Bump dessant/lock-threads from 5.0.0 to 5.0.1 by @dependabot in https://github.com/flutter/flutter/pull/138921
- Wide gamut and platform view integration test. by @jonahwilliams in https://github.com/flutter/flutter/pull/138837
- Reverts "Wide gamut and platform view integration test." by @auto-submit in https://github.com/flutter/flutter/pull/139100
- Reland Add platform view wide gamut test by @jonahwilliams in https://github.com/flutter/flutter/pull/139101
- Run platform_channels_benchmarks on Pixel 7 Pro by @zanderso in https://github.com/flutter/flutter/pull/139092
- Renable macOS 13 tests by @vashworth in https://github.com/flutter/flutter/pull/139083
- Move analysis test to shard tests. by @godofredoc in https://github.com/flutter/flutter/pull/139161
- Reverts "Reland Add platform view wide gamut test" by @auto-submit in https://github.com/flutter/flutter/pull/139189
- Migrate fuchsia_precache to shard tests. by @godofredoc in https://github.com/flutter/flutter/pull/139202
- Use the correct recipe on fuchsia_precache. by @godofredoc in https://github.com/flutter/flutter/pull/139279
- Move Impeller tests on Pixel 7 Pro from staging to prod by @zanderso in https://github.com/flutter/flutter/pull/139280
- Refactor prepare_package.dart by @christopherfujino in https://github.com/flutter/flutter/pull/139277
- Migrate docs_test to shard. by @godofredoc in https://github.com/flutter/flutter/pull/139282
- [flutter_releases] Flutter beta 3.18.0-0.0.pre Framework Cherrypicks by @CaseyHillers in https://github.com/flutter/flutter/pull/139515
New Contributors
- @s0nerik made their first contribution in https://github.com/flutter/flutter/pull/129210
- @peterabrahamdev made their first contribution in https://github.com/flutter/flutter/pull/138253
- @feduke-nukem made their first contribution in https://github.com/flutter/flutter/pull/137913
- @arpitgandhi9 made their first contribution in https://github.com/flutter/flutter/pull/106635
- @victoreronmosele made their first contribution in https://github.com/flutter/flutter/pull/138160
- @neko-andrew made their first contribution in https://github.com/flutter/flutter/pull/138074
- @kalafut made their first contribution in https://github.com/flutter/flutter/pull/139084
- @gbtb16 made their first contribution in https://github.com/flutter/flutter/pull/130264
- @gzurowski made their first contribution in https://github.com/flutter/flutter/pull/138973
- @VB10 made their first contribution in https://github.com/flutter/flutter/pull/136165
- @yakagami made their first contribution in https://github.com/flutter/flutter/pull/135936
Engine
Notable commits
Specialization constants
The team added support for specialization constants to Impeller. Taking advantage of this feature in Impeller’s shaders reduced uncompressed binary size of the Flutter engine by nearly 350KB. * [Impeller] Add support for specialization constants (III). by @jonahwilliams in https://github.com/flutter/engine/pull/47765 * [Impeller] use spec constant for decal support in morph filter. By @jonahwilliams in https://github.com/flutter/engine/pull/48288
Blur improvements
The team landed a few improvements to Impeller’s blur fidelity and performance. Further improvements to blur performance are in the works, and are expected to appear in a future release. * [Impeller] implements incorporating the gaussian blur snapshot transform by @gaaclarke in https://github.com/flutter/engine/pull/48426 * [Impeller] match sigma scaling to Skia scaling. by @jonahwilliams in https://github.com/flutter/engine/pull/48434 * [Impeller] Skip mask blur with 0 sigma. by @jonahwilliams in https://github.com/flutter/engine/pull/48457
Tessellation improvements
Impeller keeps the number of shaders it needs small and fixed by using a rendering strategy that relies on tessellating paths. Since tessellation is important, the team has made a number of small improvements to its performance in this release. * [Impeller] implement Canvas::DrawLine to tesselate lines directly by @flar in https://github.com/flutter/engine/pull/47846 * [Impeller] Simplify convex tessellation by @jonahwilliams in https://github.com/flutter/engine/pull/47957 * [Impeller] Add direct tesselation of circles for DrawCircle and Round end caps by @flar in https://github.com/flutter/engine/pull/48103 * [Impeller] Reduce allocations for polyline generation by @dnfield in https://github.com/flutter/engine/pull/47837
Misc. Performance Improvements
As progress towards making Impeller on Android production ready, the team has been making many small performance improvements wherever indicated by profiles of our benchmarks. These improvements touch both the Vulkan and Metal backends as well as the backend-agnostic parts of Impeller. * [engine] request frame rate once per frame. by @jonahwilliams in https://github.com/flutter/engine/pull/47954 * [Impeller] Remove capability to read from onscreen. by @jonahwilliams in https://github.com/flutter/engine/pull/47808 * [Impeller] add async command submission for blit pass. by @jonahwilliams in https://github.com/flutter/engine/pull/48040 * [Impeller] store all path point data in single buffer. by @jonahwilliams in https://github.com/flutter/engine/pull/47896 * [Impeller] preallocate command buffer to next power of two of entity list. by @jonahwilliams https://github.com/flutter/engine/pull/48185 * [Impeller] cache render target properties on Render Pass. by @jonahwilliams in https://github.com/flutter/engine/pull/48323 * SurfaceFrame root DisplayLists will no longer prepare an RTree by @flar in https://github.com/flutter/engine/pull/48422 * [Impeller] Recycle descriptor sets. by @jonahwilliams in https://github.com/flutter/engine/pull/48343
Misc. Bug Fixes
The team continues to prioritize continually improving product excellence by fixing issues reported by users, and driving Impeller towards production readiness on Android. As part of this work, in this release the team landed bug fixes in various areas. * Fix Share Screen Crash on iPad by @LouiseHsu in https://github.com/flutter/engine/pull/48220 * [Impeller] Switched to static linked libc++ in vulkan validation layers. by @gaaclarke in https://github.com/flutter/engine/pull/48290 * [Impeller] Ensure that overlay surfaces are constructed with wide gamut settings. by @jonahwilliams in https://github.com/flutter/engine/pull/48190 * [Impeller] Gate Vulkan selection on API 29 by @dnfield in https://github.com/flutter/engine/pull/48089 * [Impeller] fix drawVertices dest fast path to apply alpha. by @jonahwilliams in https://github.com/flutter/engine/pull/47695 * [Impeller] fix order of operations in SkSL generated texture lookup. by @jonahwilliams in https://github.com/flutter/engine/pull/48488
Android
Support for Share.invoke
The default “Share” button on text fields and views was previously missing from Android, but we’ve added it in this beta as part of our ongoing effort to ensure all the default context menu buttons are available on each platform. You can follow that ongoing work here. * [Android] Add support for the PlatformChannel "Share.invoke" command by @bleroux in https://github.com/flutter/engine/pull/48265
Native assets feature
If you’re interested in interoping with other functions from other languages in your Flutter code, you can now perform FFI calls through Native assets on Android as part of our ongoing work towards supporting Native assets. Try it out in this beta 3.18! * Native assets support for Android by @dcharkes in https://github.com/flutter/flutter/pull/135148
Texture Layer Hybrid Composition (THLC) mode
Beta 3.18 includes work that now makes Google Maps and the text input magnifier work in TLHC mode, which means better performance for your apps. If you’re using Google Maps, we encourage you to test out the changes and let us know your feedback! This work doesn’t include commits under the Framework or Engine, but you can see the work here, and the steps to test out THLC here.
The remaining commits are listed below:
* Add KeyEventDeviceType
to KeyData
by @gspencergoog in https://github.com/flutter/engine/pull/47315
* Fix ImmutableEnum lint by @jiahaog in https://github.com/flutter/engine/pull/47739
* Don't use Skia BUILD.gn files by @zanderso in https://github.com/flutter/engine/pull/47677
* Fix narrowing conversion lint by @jiahaog in https://github.com/flutter/engine/pull/47740
* Use targetSdkVersion 33 for Android platform AndroidManifest.xml by @utzcoz in https://github.com/flutter/engine/pull/47683
* Upgrade Android SDK to 34 "UpsideDownCake" by @gmackall in https://github.com/flutter/engine/pull/47609
* Reverts "Upgrade Android SDK to 34 "UpsideDownCake"" by @auto-submit in https://github.com/flutter/engine/pull/47834
* [Re-land] Upgrade Android SDK to 34 "UpsideDownCake" by @gmackall in https://github.com/flutter/engine/pull/47839
* [Android] Bump robolectric version to support unit testing on Android 34 by @camsim99 in https://github.com/flutter/engine/pull/47768
* Bump minSdk to 19 for Android tests by @utzcoz in https://github.com/flutter/engine/pull/47686
* Reverts "Bump minSdk to 19 for Android tests" by @auto-submit in https://github.com/flutter/engine/pull/47935
* Revert "Add an AndroidManifest.xml flag to disable ImageReader backend Platform Views (#46430)" by @johnmccutchan in https://github.com/flutter/engine/pull/48024
* [Impeller] Gate Vulkan selection on API 29 by @dnfield in https://github.com/flutter/engine/pull/48089
* Make flow/embedded_views.h
compatible with .clang_tidy
. by @matanlurey in https://github.com/flutter/engine/pull/47994
* Reverts "Make flow/embedded_views.h
compatible with .clang_tidy
." by @auto-submit in https://github.com/flutter/engine/pull/48130
* Re-land "Make flow/embedded_views.h
compatible with .clang_tidy
." by @matanlurey in https://github.com/flutter/engine/pull/48137
* [Android] Send " did gain focus" message from engine to framework by @hangyujin in https://github.com/flutter/engine/pull/47114
* Fix a few typos by @bartekpacia in https://github.com/flutter/engine/pull/47960
* Replace calls to SkFontMgr::RefDefault by @kjlubick in https://github.com/flutter/engine/pull/48179
* [PlatformView][Android]VirtualDisplay resize on Android31 and above by @designDo in https://github.com/flutter/engine/pull/47946
* Make {shell|lib/ui}/...
compatible with .clang_tidy
. by @matanlurey in https://github.com/flutter/engine/pull/48242
* [Impeller] Switched to static linked libc++ in vulkan validation layers. by @gaaclarke in https://github.com/flutter/engine/pull/48290
* Finish making shell/platform/android/...
compatible with .clang-tidy
. by @matanlurey in https://github.com/flutter/engine/pull/48296
* Reduce number of surfaces required when presenting platform views by @knopp in https://github.com/flutter/engine/pull/43301
* Fix new lint from android 14 upgrade, and remove it from the baseline by @gmackall in https://github.com/flutter/engine/pull/47817
* [Android] Check for text to paste before trying to retrieve data from URI by @camsim99 in https://github.com/flutter/engine/pull/48166
iOS
Fixes for iOS bugs
The team has addressed bugs concerning hiding and overriding the status bar in iOS, as well as reported keyboard freezes when switching between languages in iOS. * Fix not being able to hide iOS status bar via setEnabledSystemUIMode by @LinXunFeng in https://github.com/flutter/engine/pull/48271 * [ios17][text_input]fix ios 17.0 keyboard freeze when switching languages (without relying on text affinity) by @hellohuanlin in https://github.com/flutter/engine/pull/47566
The remaining commits are listed below:
* [ios] making objective-C smart pointers support ARC by @cyanglaz in https://github.com/flutter/engine/pull/47612
* [ios]fix ios 16 auto correction highlight showing on top left corner by @hellohuanlin in https://github.com/flutter/engine/pull/47279
* [ios] introduce weak_nsobject by @cyanglaz in https://github.com/flutter/engine/pull/47947
* Reland "[Impeller] Fail if software backend is chosen and Impeller is enabled on iOS." by @dnfield in https://github.com/flutter/engine/pull/46275
* [Ios] move flutter_test_ios_mrc unittests to arc by @cyanglaz in https://github.com/flutter/engine/pull/48162
* Make shell/platform/{darwin|embedder}/...
compatible with .clang-tidy
. by @matanlurey in https://github.com/flutter/engine/pull/48160
* Moves expat, ocmock, libjpeg-turbo, libwebp, and wuffs to //flutter/third_party by @zanderso in https://github.com/flutter/engine/pull/48193
* [Impeller] Ensure that overlay surfaces are constructed with wide gamut settings. by @jonahwilliams in https://github.com/flutter/engine/pull/48190
* Fix Share Screen Crash on iPad by @LouiseHsu in https://github.com/flutter/engine/pull/48220
* [ios] Send " did gain focus" message from engine to framework by @hangyujin in https://github.com/flutter/engine/pull/48252
* Update HeaderFilterRegex
once and for all. by @matanlurey in https://github.com/flutter/engine/pull/48145
Web
New Text API
This release includes two new methods on dart:ui
’s Paragraph
object: getClosestGlyphInfoForOffset
, and getGlyphInfoAt
, which each return an object of the new type GlyphInfo
. Check out the documentation on this new type here.
* Expose a few more glyph apis from ui.Paragraph
by @LongCatIsLooong in https://github.com/flutter/engine/pull/47698
The remaining commits are listed below:
* Reland: [web] Ensure handled key event is not propagated to IME by @knopp in https://github.com/flutter/engine/pull/47099
* Bundle flutter.js via esbuild by @eyebrowsoffire in https://github.com/flutter/engine/pull/47573
* [web] fix clicks on merged semantic nodes (attempt [#2]) by @yjbanov in https://github.com/flutter/engine/pull/47360
* [web] Non-singleton implementation of ui.FlutterView by @mdebbar in https://github.com/flutter/engine/pull/47806
* Remove physical geometry by @goderbauer in https://github.com/flutter/engine/pull/47825
* Reverts "Remove physical geometry" by @auto-submit in https://github.com/flutter/engine/pull/47862
* [web] Refactor a11y announcements out of FlutterViewEmbedder by @mdebbar in https://github.com/flutter/engine/pull/47487
* Reland "Remove physical geometry" by @goderbauer in https://github.com/flutter/engine/pull/47872
* Remove implements of JS types on @staticInterop classes by @srujzs in https://github.com/flutter/engine/pull/47869
* [web] Move styling from FlutterViewEmbedder to StyleManager by @mdebbar in https://github.com/flutter/engine/pull/47489
* [web] - fix Safari textfield selection bug by @htoor3 in https://github.com/flutter/engine/pull/47917
* [web] Cleanup touch and mouse event adapters by @mdebbar in https://github.com/flutter/engine/pull/43697
* Move Skia to //flutter/third_party/skia by @zanderso in https://github.com/flutter/engine/pull/47913
* [web] Explicit initialization of the implicit view by @mdebbar in https://github.com/flutter/engine/pull/47921
* Use flutter.js in the actual test harness. by @eyebrowsoffire in https://github.com/flutter/engine/pull/47670
* [web] JSConfig: Add multiViewEnabled value. by @ditman in https://github.com/flutter/engine/pull/47939
* [web] Move EmbeddingStrategy
and DimensionsProvider
out of FlutterViewEmbedder
by @mdebbar in https://github.com/flutter/engine/pull/48025
* [web] Apply global styles before inserting the DOM element by @mdebbar in https://github.com/flutter/engine/pull/48027
* [canvaskit] Size the PictureRecorder when calling Scene.toImage by @harryterkelsen in https://github.com/flutter/engine/pull/48142
* [web] Move all DOM creation to DomManager by @mdebbar in https://github.com/flutter/engine/pull/48123
* [web] Move scene DOM management to DomManager by @mdebbar in https://github.com/flutter/engine/pull/47460
* [web] EngineFlutterView.dispose() by @mdebbar in https://github.com/flutter/engine/pull/48183
* [web] Add add/removeView JS methods. by @ditman in https://github.com/flutter/engine/pull/48106
* [web] Hook the new JS API to the FlutterViewManager by @mdebbar in https://github.com/flutter/engine/pull/48283
* [canvaskit] Enable multiview rendering by @harryterkelsen in https://github.com/flutter/engine/pull/48301
* Dynamic view sizing [dart:ui] by @goderbauer in https://github.com/flutter/engine/pull/48090
* [canvaskit] Fall back to drawImage
for browsers that don't support createImageBitmap
by @harryterkelsen in https://github.com/flutter/engine/pull/48336
* [canvaskit] Disable createImageBitmap support on Chrome 110 or older on Windows. by @harryterkelsen in https://github.com/flutter/engine/pull/48475
* [web] No implicit view in multi-view mode by @mdebbar in https://github.com/flutter/engine/pull/48505
* [canvaskit] Revert to drawImage
rendering on Chrome 110 or earlier by @harryterkelsen in https://github.com/flutter/engine/pull/48515
* [canvaskit] Add ImageFilter.compose by @harryterkelsen in https://github.com/flutter/engine/pull/48546
Desktop
- [Windows] Reduce warnings produced by unit tests by @loic-sharma in https://github.com/flutter/engine/pull/47724
- [testing] Extract StreamCapture test utility by @cbracken in https://github.com/flutter/engine/pull/47774
- [macOS] Bail out of tests if engine not running by @cbracken in https://github.com/flutter/engine/pull/47771
- [macOS] Clean up resources in ViewController tests by @cbracken in https://github.com/flutter/engine/pull/47792
- [macOS] Allocate textures as unique_ptr earlier by @cbracken in https://github.com/flutter/engine/pull/47786
- [Windows] Remove global state in keyboard tests by @loic-sharma in https://github.com/flutter/engine/pull/47829
- Expanded the performance lints by @gaaclarke in https://github.com/flutter/engine/pull/47868
- [macOS] Eliminate unused OCMock includes by @cbracken in https://github.com/flutter/engine/pull/48031
- [macOS] Clean up allocations in key responder tests by @cbracken in https://github.com/flutter/engine/pull/48048
- Update keycode output by @gspencergoog in https://github.com/flutter/engine/pull/47988
- [macOS] Clean up allocations in menu plugin test by @cbracken in https://github.com/flutter/engine/pull/48093
- [macOS] Replace fixture subclasses with usings by @cbracken in https://github.com/flutter/engine/pull/48111
- [macOS] Replace pasteboard mock with fake by @cbracken in https://github.com/flutter/engine/pull/48110
- Assign mojom
kSwitch
role to switches by @yaakovschectman in https://github.com/flutter/engine/pull/48146 - [Windows] Begin decoupling text input plugin from the view by @loic-sharma in https://github.com/flutter/engine/pull/47833
New Contributors
- @hongeSunCoder made their first contribution in https://github.com/flutter/engine/pull/48013
- @designDo made their first contribution in https://github.com/flutter/engine/pull/47946