Flutter 3.18 beta (December 5, 2023)
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 #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 #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 #136708 - Fix 2D tap to stop scrolling by @Piinks in #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 #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
toUndoHistory
by @Renzo-Olivares in #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 #124153 - Introduce
AnimationStyle
by @TahaTesser in #137945 - Fix sliver persistent header expand animation by @feduke-nukem in #137913
- Add ability to customize
NavigationBar
indicator overlay and fix indicator shape for the overlay by @TahaTesser in #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 #137806
- [leak-tracking] Add more leak tracking in test/painting #3 by @droidbg in #136170
- [web] dispatch corresponding keyup events in text editing integrations by @knopp in #136874
- Updated the nested navigation NavigationBar example by @HansMuller in #137788
- AppLifecycleListener should dispatch creation and disposal events. by @ksokolovskyi in #137840
- InkFeature should dispatch creation and disposal events. by @ksokolovskyi in #137793
- Reverts "[Android] Support Android 34" by @auto-submit in #137865
- Tooltip docs: Recommend setting preferBelow to false in theme by @chrisbobbe in #135879
- Send caret rect to embedder on selection update by @cbracken in #137863
- Remove unused generic type from BottomSheet by @goderbauer in #137791
- InheritedElement.removeDependent() by @s0nerik in #129210
- HeroController should dispatch creation and disposal events. by @ksokolovskyi in #137835
- Provide a helpful error message when
ColorScheme.brightness
doesn't matchThemeData.brightness
by @TahaTesser in #137611 - Update BottomNavigationBar tests for M3 by @bleroux in #136624
- Reverts "Update BottomNavigationBar tests for M3" by @auto-submit in #137948
- Cover text_selection tests with leak tracking. by @ksokolovskyi in #137009
- ScrollActivity should dispatch creation and disposal events. by @ksokolovskyi in #137961
- SemanticsHandle should dispatch creation and disposal events. by @ksokolovskyi in #137960
- Added an AnimationController API doc example by @HansMuller in #137975
- Document where
Curves
curves correspond to CSS easing functions by @gnprice in #137318 - Revert "Add no-shuffle to reorderable_list_test.dart" by @dnfield in #137715
- Ticker should dispatch creation and disposal events. by @ksokolovskyi in #137844
- Add support for color and color blendmode in FadeInImage by @prasadsunny1 in #137681
- Document additional cases by @dnfield in #137957
- [Android] Fix
FlutterTestRunner.java
deprecations by @camsim99 in #138093 - Remove physicalGeometry by @goderbauer in #138103
- Add
onSubmitted
andonChanged
forSearchAnchor
andSearchAnchor.bar
by @QuncCccccc in #136840 - Make it possible to disable tapping to dismiss a tooltip. by @hangyujin in #137375
- Fix text selection in
SearchAnchor/SearchBar
by @Renzo-Olivares in #137636 - [Android] Support Android 34 (take 2) by @camsim99 in #137967
- Adds
useRootNavigator
property toPopupMenuButton
widget. by @piedcipher in #137453 - Update analytics constructor to include
FLUTTER_HOST
by @eliasyishak in #138107 - Fix #128925 by properly setting the Android Event Source by @johnmccutchan in #138241
- GestureRecognizer should dispatch creation and disposal events. by @ksokolovskyi in #138223
- Deprecates onWillAccept and onAccept callbacks in DragTarget. by @chinmoy12c in #133691
- Docs typo: comprised -> composed by @EnduringBeta in #137896
- Upgrade leak tracker. by @polina-c in #138283
- Clean up synonyms, key code generation. by @gspencergoog in #138192
- Update DraggableScrollableSheet docs to reflect API change by @huycozy in #136471
- Finally remove analysis_options_user.yaml by @goderbauer in #138261
- Fixing typo by @peterabrahamdev in #138253
- Reland "Update
framework_test.dart
to removeButtonBar
usage and remove references from other clases (#137550) by @TahaTesser in #137753 - Add to TableCell docs by @Piinks in #138258
- Reland [SingleChildScrollView] Correct the offset pixels if it is out of range during layout by @xu-baolin in #136871
- SemanticOwner should dispatch creation and disposal events by @droidbg in #138388
- Reland VelocityTracker update (#132291) by @Piinks in #137381
- [web] skip flaky overflow_clipbehavior_none.cupertino.0.png golden check by @yjbanov in #138498
- Reverts "Reland VelocityTracker update (#132291)" by @auto-submit in #138512
- Pin package:web 0.4.0 by @srujzs in #138428
- Prepare
ShortcutActivator
andShortcutManager
to migrate toKeyEvent
fromRawKeyEvent
. by @gspencergoog in #136854 - [flutter_tools] - Add
queries
section to Android manifest file by @bleroux in #137207 - Reduce animations further when --no-cli-animations is set. by @Hixie in #133598
- Enable the silent flag for invalid string exceptions when building a TextSpan by @jason-simmons in #138564
- Turn off leak tracker in master to make found leaks not blocking. by @polina-c in #138567
- Enable
flutter screenshot
outside Flutter project directory by @victoreronmosele in #138160 - Reverts "Introduce
AnimationStyle
" by @auto-submit in #138628 - Fix NoSplash not being disposed by @LinXunFeng in #138542
- Update links and surrounding text for new
main-api
docs by @parlough in #138602 - Reland update bottom navigation bar test for m3 by @bleroux in #137998
- [Reland] Introduce
AnimationStyle
by @TahaTesser in #138721 - Added Features requested in #137530 by @mhbdev in #137532
- Fix Chips with Tooltip throw an assertion when enabling or disabling by @TahaTesser in #138799
- Fix M3 Tabs Specs links by @TahaTesser in #138808
- Reland VelocityTracker update (again) by @Piinks in #138843
- Revert "Reland VelocityTracker update (again)" by @eyebrowsoffire in #138863
- Add
commandHasTerminal
parameter + apple usage event +sendException
events forpackage:unified_analytics
by @eliasyishak in #138806 - Update the default outline color for
OutlinedButton
by @QuncCccccc in #138768 - make FakeView not send Scene and semantics to the engine by @yjbanov in #138849
- Fix SliverGrid garbage collection issue by @chunhtai in #138915
- Write tests for API examples of BottomNavigationBar and IconButton by @JaspervanRiet in #138188
- Prepare for dynamically sized views by @goderbauer in #138565
- Prepare for dynamically sized views - pt. 2 by @goderbauer in #139079
- Bump DartDoc to 8.0.0 by @kallentu in #139088
- Record focus in route entry to move a11y focus to the last focused item by @hangyujin in #135771
- Migrate customer_testing to sharded tests. by @godofredoc in #138659
- Fix intrinsic width of input decorator by @neko-andrew in #138074
- Fix textScalerOf and maybeTextScalerOf documentations by @bleroux in #139123
- Fix turbulence seed for all tests with ink sparkles by @Piinks in #138757
- Fix header formatting typo in PopupMenuButton docs by @kalafut in #139084
- Added keyboardType & textInputAction props to SearchBar, SearchAnchor & SearchAnchor.bar by @piedcipher in #138553
- Ensure Icon vertically centers its icon glyph. by @LongCatIsLooong in #138937
- feature(table-widget): Added intrinsicHeight to TableCellVerticalAlignment enum. by @gbtb16 in #130264
- Added some documentation for OverlayPortal by @yiiim in #138934
- Fix comment by @gzurowski in #138973
- Implement
switch
expressions indev/
by @nate-thegrate in #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 #138987 - Update
ButtonStyleButton.scaledPadding
documentation. Migrate callers in flutter/flutter by @LongCatIsLooong in #139014 - Provide parameter to Icon and IconThemeData for they to consider the context's text scaler by @mateusfccp in #135708
- implemented leadingWidth and automaticallyImplyLeading options by @VB10 in #136165
- Simplify devicelab logic and fix tests by @Hixie in #139122
- Improve documentation of CardTheme.shape by @dumazy in #139096
- Analyze against using Stopwatches in the framework by @Piinks in #138507
- Update VelocityTracker (4) by @Piinks in #139166
- Remove deprecated
PlatformMenuBar.body
by @gspencergoog in #138509 - add sourceTimeStamp to ScaleUpdateDetails by @yakagami in #135936
- Dynamic view sizing by @goderbauer in #138648
- Fix chips
onDeleted
callback don't show the delete button when disabled by @TahaTesser in #137685 - Write Tests for API Examples of
cupertino_text_field.0
,data_table.0
,icon_button.2
&ink_well.0
by @piedcipher in #139258
iOS
- [native assets] Tool exit on build failure by @dcharkes in #137995
- Migration for the
sendTiming
events forpackage:unified_analytics
by @eliasyishak in #138896 - Reverts "Migration for the
sendTiming
events forpackage:unified_analytics
" by @auto-submit in #139278
Web
- #60704: Pass cert for TLS localhost connection by @arpitgandhi9 in #106635
Tooling
- [flutter_tools] do not try to build tool from dart.sh by @christopherfujino in #129186
- Pin dart-lang/native dependencies by @dcharkes in #137601
- Fix tool exit message shown when user provides a non-list to "assets" for a deferred component by @andrewkolos in #137837
- Change cast in json parsing by @iinozemtsev in #137708
- Migration for
HotEvent
for Flutter hot runner by @eliasyishak in #137717 - Roll pub packages by @flutter-pub-roller-bot in #137862
- [flutter_tools] toolexit when using plugins with preview device by @christopherfujino in #136936
- [flutter_tools] Fix local engine preview device by @christopherfujino in #138046
- [flutter_tools] disable flutter build AAR for plugins by @christopherfujino in #137878
- Roll pub packages by @flutter-pub-roller-bot in #138114
- prevent tool crash when
IntelliJValidatorOnMac
encounters an installation with a missingCFBundleIdentifier
by @andrewkolos in #138095 - Improved Java version parsing by @reidbaker in #138155
- Roll pub packages by @flutter-pub-roller-bot in #138163
- Drop unnecessary URI encoding of websocket url in listener by @dnfield in #137969
- Prepare the analyze_once test for removal of analysis_options_user support by @srawlins in #138229
CommandResultEvent
migrated by @eliasyishak in #138165- [macOS] Suppress Xcode 15 createItemModels warning by @cbracken in #138243
- Fixes vscode path installed via snap by @KristijanZic in #136997
- Consume flutter.js from the engine artifacts. by @eyebrowsoffire in #137113
- Unified analytics migration for
CodeSizeAnalysis
by @eliasyishak in #138351 - Catch error for missing directory in
FontConfigManager
by @eliasyishak in #138496 - Just use string interpolation for ws url for tests by @dnfield in #138235
- Bump cupertino_icons to 1.0.6 by @lsaudon in #136962
- Improves output file path logic in Android analyze by @chunhtai in #136981
- Fix file deletion crash in BuildIOSArchiveCommand.runCommand by @vashworth in #138734
- In
flutter doctor -v
, when JRE is too out-of-date to runsdkmanager
, print a helpful error message by @andrewkolos in #138762 - [flutter_tools] Fix bad state future already completed in flutter logs by @christopherfujino in #138517
- Edge case on /issues/135402 with test by @reidbaker in #138814
- Give an actionable error message when a Pod requires a higher minimum OS version by @stuartmorgan in #138097
- Update Android app project template to apply Kotlin Gradle plugin declaratively by @bartekpacia in #139006
- Add type validation to non-template .arb file parsing logic by @andrewkolos in #139035
- [flutter_tools] fix instructions to disable CLI animations by @christopherfujino in #139094
- Roll dependencies by @Hixie in #139203
Documentation
- Check sample links for malformed links by @gspencergoog in #137807
Other Changes
- Roll flutter gallery version forward. by @jonahwilliams in #137846
- [benchmarks] disable partial repaint for multiple backdrop blur iOS macrobenchmarks. by @jonahwilliams in #137902
- Move Skia new_gallery_transition_perf on a02 from staging to prod by @zanderso in #138013
- Use no-response from cocoon. by @godofredoc in #138037
- Reverts "Use no-response from cocoon." by @auto-submit in #138042
- Run a couple of iOS tests in presubmit by @vashworth in #138089
- Remove fuchsia mac version by @CaseyHillers in #138101
- Use specific version of mac_toolchain by @vashworth in #138115
- Move Mac_build_test flutter_gallery__transition_perf_e2e_ios to staging by @vashworth in #138196
- Use merge-base in find_commit.dart by @natebosch in #138033
- Only run tests on macOS 12 by @vashworth in #138260
- Add a DevTools section to CONTRIBUTING.md by @kenzieschmoll in #137193
- Run all tests in examples/ by @goderbauer in #138374
- Bump github/codeql-action from 2.22.5 to 2.22.6 by @dependabot in #138438
- Bump dessant/lock-threads from 4.0.1 to 5.0.0 by @dependabot in #138437
- Adding new packages to the first-party package issue template by @huycozy in #138540
- Update release.yml by @johnpryan in #138561
- test owners: cyanglaz -> vashworth by @cyanglaz in #138726
- Bump dartdoc to 7.0.2 by @srawlins in #138760
- Add dartdoc warnings by @goderbauer in #138766
- Add mhbdev to AUTHORS by @mhbdev in #138311
- Fix team-infra label in dependabot by @goderbauer in #138917
- Bump dessant/lock-threads from 5.0.0 to 5.0.1 by @dependabot in #138921
- Wide gamut and platform view integration test. by @jonahwilliams in #138837
- Reverts "Wide gamut and platform view integration test." by @auto-submit in #139100
- Reland Add platform view wide gamut test by @jonahwilliams in #139101
- Run platform_channels_benchmarks on Pixel 7 Pro by @zanderso in #139092
- Renable macOS 13 tests by @vashworth in #139083
- Move analysis test to shard tests. by @godofredoc in #139161
- Reverts "Reland Add platform view wide gamut test" by @auto-submit in #139189
- Migrate fuchsia_precache to shard tests. by @godofredoc in #139202
- Use the correct recipe on fuchsia_precache. by @godofredoc in #139279
- Move Impeller tests on Pixel 7 Pro from staging to prod by @zanderso in #139280
- Refactor prepare_package.dart by @christopherfujino in #139277
- Migrate docs_test to shard. by @godofredoc in #139282
- [flutter_releases] Flutter beta 3.18.0-0.0.pre Framework Cherrypicks by @CaseyHillers in #139515
New Contributors
- @s0nerik made their first contribution in #129210
- @peterabrahamdev made their first contribution in #138253
- @feduke-nukem made their first contribution in #137913
- @arpitgandhi9 made their first contribution in #106635
- @victoreronmosele made their first contribution in #138160
- @neko-andrew made their first contribution in #138074
- @kalafut made their first contribution in #139084
- @gbtb16 made their first contribution in #130264
- @gzurowski made their first contribution in #138973
- @VB10 made their first contribution in #136165
- @yakagami made their first contribution in #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 flutter/engine#47765
- [Impeller] use spec constant for decal support in morph filter. By @jonahwilliams in flutter/engine#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 flutter/engine#48426
- [Impeller] match sigma scaling to Skia scaling. by @jonahwilliams in flutter/engine#48434
- [Impeller] Skip mask blur with 0 sigma. by @jonahwilliams in flutter/engine#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 flutter/engine#47846
- [Impeller] Simplify convex tessellation by @jonahwilliams in flutter/engine#47957
- [Impeller] Add direct tesselation of circles for DrawCircle and Round end caps by @flar in flutter/engine#48103
- [Impeller] Reduce allocations for polyline generation by @dnfield in flutter/engine#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 flutter/engine#47954
- [Impeller] Remove capability to read from onscreen. by @jonahwilliams in flutter/engine#47808
- [Impeller] add async command submission for blit pass. by @jonahwilliams in flutter/engine#48040
- [Impeller] store all path point data in single buffer. by @jonahwilliams in flutter/engine#47896
- [Impeller] preallocate command buffer to next power of two of entity list. by @jonahwilliams flutter/engine#48185
- [Impeller] cache render target properties on Render Pass. by @jonahwilliams in flutter/engine#48323
- SurfaceFrame root DisplayLists will no longer prepare an RTree by @flar in flutter/engine#48422
- [Impeller] Recycle descriptor sets. by @jonahwilliams in flutter/engine#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 flutter/engine#48220
- [Impeller] Switched to static linked libc++ in vulkan validation layers. by @gaaclarke in flutter/engine#48290
- [Impeller] Ensure that overlay surfaces are constructed with wide gamut settings. by @jonahwilliams in flutter/engine#48190
- [Impeller] Gate Vulkan selection on API 29 by @dnfield in flutter/engine#48089
- [Impeller] fix drawVertices dest fast path to apply alpha. by @jonahwilliams in flutter/engine#47695
- [Impeller] fix order of operations in SkSL generated texture lookup. by @jonahwilliams in flutter/engine#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 flutter/engine#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!
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
toKeyData
by @gspencergoog in flutter/engine#47315 - Fix ImmutableEnum lint by @jiahaog in flutter/engine#47739
- Don't use Skia BUILD.gn files by @zanderso in flutter/engine#47677
- Fix narrowing conversion lint by @jiahaog in flutter/engine#47740
- Use targetSdkVersion 33 for Android platform AndroidManifest.xml by @utzcoz in flutter/engine#47683
- Upgrade Android SDK to 34 "UpsideDownCake" by @gmackall in flutter/engine#47609
- Reverts "Upgrade Android SDK to 34 "UpsideDownCake"" by @auto-submit in flutter/engine#47834
- [Re-land] Upgrade Android SDK to 34 "UpsideDownCake" by @gmackall in flutter/engine#47839
- [Android] Bump robolectric version to support unit testing on Android 34 by @camsim99 in flutter/engine#47768
- Bump minSdk to 19 for Android tests by @utzcoz in flutter/engine#47686
- Reverts "Bump minSdk to 19 for Android tests" by @auto-submit in flutter/engine#47935
- Revert "Add an AndroidManifest.xml flag to disable ImageReader backend Platform Views (#46430)" by @johnmccutchan in flutter/engine#48024
- [Impeller] Gate Vulkan selection on API 29 by @dnfield in flutter/engine#48089
- Make
flow/embedded_views.h
compatible with.clang_tidy
. by @matanlurey in flutter/engine#47994 - Reverts "Make
flow/embedded_views.h
compatible with.clang_tidy
." by @auto-submit in flutter/engine#48130 - Re-land "Make
flow/embedded_views.h
compatible with.clang_tidy
." by @matanlurey in flutter/engine#48137 - [Android] Send " did gain focus" message from engine to framework by @hangyujin in flutter/engine#47114
- Fix a few typos by @bartekpacia in flutter/engine#47960
- Replace calls to SkFontMgr::RefDefault by @kjlubick in flutter/engine#48179
- [PlatformView][Android]VirtualDisplay resize on Android31 and above by @designDo in flutter/engine#47946
- Make
{shell|lib/ui}/...
compatible with.clang_tidy
. by @matanlurey in flutter/engine#48242 - [Impeller] Switched to static linked libc++ in vulkan validation layers. by @gaaclarke in flutter/engine#48290
- Finish making
shell/platform/android/...
compatible with.clang-tidy
. by @matanlurey in flutter/engine#48296 - Reduce number of surfaces required when presenting platform views by @knopp in flutter/engine#43301
- Fix new lint from android 14 upgrade, and remove it from the baseline by @gmackall in flutter/engine#47817
- [Android] Check for text to paste before trying to retrieve data from URI by @camsim99 in flutter/engine#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 flutter/engine#48271
- [ios17][text_input]fix ios 17.0 keyboard freeze when switching languages (without relying on text affinity) by @hellohuanlin in flutter/engine#47566
The remaining commits are listed below:
- [ios] making objective-C smart pointers support ARC by @cyanglaz in flutter/engine#47612
- [ios]fix ios 16 auto correction highlight showing on top left corner by @hellohuanlin in flutter/engine#47279
- [ios] introduce weak_nsobject by @cyanglaz in flutter/engine#47947
- Reland "[Impeller] Fail if software backend is chosen and Impeller is enabled on iOS." by @dnfield in flutter/engine#46275
- [Ios] move flutter_test_ios_mrc unittests to arc by @cyanglaz in flutter/engine#48162
- Make
shell/platform/{darwin|embedder}/...
compatible with.clang-tidy
. by @matanlurey in flutter/engine#48160 - Moves expat, ocmock, libjpeg-turbo, libwebp, and wuffs to //flutter/third_party by @zanderso in flutter/engine#48193
- [Impeller] Ensure that overlay surfaces are constructed with wide gamut settings. by @jonahwilliams in flutter/engine#48190
- Fix Share Screen Crash on iPad by @LouiseHsu in flutter/engine#48220
- [ios] Send " did gain focus" message from engine to framework by @hangyujin in flutter/engine#48252
- Update
HeaderFilterRegex
once and for all. by @matanlurey in flutter/engine#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 flutter/engine#47698
The remaining commits are listed below:
- Reland: [web] Ensure handled key event is not propagated to IME by @knopp in flutter/engine#47099
- Bundle flutter.js via esbuild by @eyebrowsoffire in flutter/engine#47573
- [web] fix clicks on merged semantic nodes (attempt #2) by @yjbanov in flutter/engine#47360
- [web] Non-singleton implementation of ui.FlutterView by @mdebbar in flutter/engine#47806
- Remove physical geometry by @goderbauer in flutter/engine#47825
- Reverts "Remove physical geometry" by @auto-submit in flutter/engine#47862
- [web] Refactor a11y announcements out of FlutterViewEmbedder by @mdebbar in flutter/engine#47487
- Reland "Remove physical geometry" by @goderbauer in flutter/engine#47872
- Remove implements of JS types on @staticInterop classes by @srujzs in flutter/engine#47869
- [web] Move styling from FlutterViewEmbedder to StyleManager by @mdebbar in flutter/engine#47489
- [web] - fix Safari textfield selection bug by @htoor3 in flutter/engine#47917
- [web] Cleanup touch and mouse event adapters by @mdebbar in flutter/engine#43697
- Move Skia to //flutter/third_party/skia by @zanderso in flutter/engine#47913
- [web] Explicit initialization of the implicit view by @mdebbar in flutter/engine#47921
- Use flutter.js in the actual test harness. by @eyebrowsoffire in flutter/engine#47670
- [web] JSConfig: Add multiViewEnabled value. by @ditman in flutter/engine#47939
- [web] Move
EmbeddingStrategy
andDimensionsProvider
out ofFlutterViewEmbedder
by @mdebbar in flutter/engine#48025 - [web] Apply global styles before inserting the DOM element by @mdebbar in flutter/engine#48027
- [canvaskit] Size the PictureRecorder when calling Scene.toImage by @harryterkelsen in flutter/engine#48142
- [web] Move all DOM creation to DomManager by @mdebbar in flutter/engine#48123
- [web] Move scene DOM management to DomManager by @mdebbar in flutter/engine#47460
- [web] EngineFlutterView.dispose() by @mdebbar in flutter/engine#48183
- [web] Add add/removeView JS methods. by @ditman in flutter/engine#48106
- [web] Hook the new JS API to the FlutterViewManager by @mdebbar in flutter/engine#48283
- [canvaskit] Enable multiview rendering by @harryterkelsen in flutter/engine#48301
- Dynamic view sizing [dart:ui] by @goderbauer in flutter/engine#48090
- [canvaskit] Fall back to
drawImage
for browsers that don't supportcreateImageBitmap
by @harryterkelsen in flutter/engine#48336 - [canvaskit] Disable createImageBitmap support on Chrome 110 or older on Windows. by @harryterkelsen in flutter/engine#48475
- [web] No implicit view in multi-view mode by @mdebbar in flutter/engine#48505
- [canvaskit] Revert to
drawImage
rendering on Chrome 110 or earlier by @harryterkelsen in flutter/engine#48515 - [canvaskit] Add ImageFilter.compose by @harryterkelsen in flutter/engine#48546
Desktop
- [Windows] Reduce warnings produced by unit tests by @loic-sharma in flutter/engine#47724
- [testing] Extract StreamCapture test utility by @cbracken in flutter/engine#47774
- [macOS] Bail out of tests if engine not running by @cbracken in flutter/engine#47771
- [macOS] Clean up resources in ViewController tests by @cbracken in flutter/engine#47792
- [macOS] Allocate textures as unique_ptr earlier by @cbracken in flutter/engine#47786
- [Windows] Remove global state in keyboard tests by @loic-sharma in flutter/engine#47829
- Expanded the performance lints by @gaaclarke in flutter/engine#47868
- [macOS] Eliminate unused OCMock includes by @cbracken in flutter/engine#48031
- [macOS] Clean up allocations in key responder tests by @cbracken in flutter/engine#48048
- Update keycode output by @gspencergoog in flutter/engine#47988
- [macOS] Clean up allocations in menu plugin test by @cbracken in flutter/engine#48093
- [macOS] Replace fixture subclasses with usings by @cbracken in flutter/engine#48111
- [macOS] Replace pasteboard mock with fake by @cbracken in flutter/engine#48110
- Assign mojom
kSwitch
role to switches by @yaakovschectman in flutter/engine#48146 - [Windows] Begin decoupling text input plugin from the view by @loic-sharma in flutter/engine#47833
New Contributors
- @hongeSunCoder made their first contribution in flutter/engine#48013
- @designDo made their first contribution in flutter/engine#47946