What’s New

flutter 3.18.0-0.1.pre

3.18.0-0.1.pre

Flutter 3.18 beta (December 5, 2023)

Added
  • Support for Apple system fonts in Flutter text rendering on iOS
  • Support for customizing the appearance of adaptive components
  • Configure default ScrollBehavior with MultiTouchDragStrategy.latestPointer for number-of-fingers-agnostic scrolling behavior
  • Support for MaterialStatesController in TextField and TextFormField to listen to MaterialState changes
  • Ability to modify the UndoHistory stack with undoStackModifier
  • Introduce AnimationStyle
  • Add ability to customize NavigationBar indicator overlay and fix indicator shape for the overlay
  • AppLifecycleListener now dispatches creation and disposal events
  • InkFeature now dispatches creation and disposal events
  • Send caret rect to embedder on selection update
  • HeroController now dispatches creation and disposal events
  • Provide helpful error message when ColorScheme.brightness does not match ThemeData.brightness
  • ScrollActivity now dispatches creation and disposal events
  • SemanticsHandle now dispatches creation and disposal events
  • Ticker now dispatches creation and disposal events
Changed
  • Switch.adaptive implementation no longer depends on the Cupertino library and is now fully handled by the Material component
  • Make UnderlineInputBorder consistent
Fixed
  • Scrolling now stops as expected when starting to drag or tap while a scroll is underway
  • Fixed undo/redo history disappearing on Japanese keyboards
  • Fix sliver persistent header expand animation

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.

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.

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.

Increased access to text widgets’ state

We added support for a MaterialStatesController in TextField and TextFormField so that you can listen to MaterialState changes.

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.

Visuals and animations

This beta includes many improvements to visuals and animations across the Flutter Framework, most notably:

Framework

The remaining Framework commits from Flutter Framework are listed below:

iOS
Web
Tooling
Documentation
Other Changes
New Contributors
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.

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.

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.

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.

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.

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.

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:

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.

The remaining commits are listed below:

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.

The remaining commits are listed below:

Desktop
New Contributors
View original