What’s new in Flutter 3.19, let’s discuss the top 11 features

Flutter 3.19 enhances development with AI, animations, and customization.

Shirsh Shukla
7 min readFeb 16, 2024

In this article, we will explore the Flutter 3.19 — What’s New In Flutter. With Flutter 3.19, developers will find a wide range of exciting new features and enhancements. As a result of this update, Flutter continues to provide a robust framework for building high-quality mobile applications. Flutter 3.19 offers a variety of tools to enhance app development, including the Gemini AI Dart SDK beta and AnimationStyle widget.

Furthermore, improvements in scrolling behavior and updates to the Impeller rendering engine further enhance the Flutter development experience. In addition to the Deep Linking Web Validator and Share.invoke support, this release also introduces new tools that make developing dynamic and engaging applications easier.

So, let’s dive into this article to explore the top eleven important aspects of this update, without getting into further discussion.

1) Gemini AI Flutter Plugin
2) Scrolling Improvements
3) AnimationStyle Widget
4) Adaptive Switch
5) improves accessibility and text field functionality
6) Impeller Progress
7) Deep linking Web Validator
8) Windows Arm64 Support
9) Performance Optimizations
10) Dev-Tools Updates
11) Flutter iOS Native Fonts

Gemini AI Flutter Plugin

The google_generative_ai Dart plugin enables the integration of generative AI features into Dart or Flutter apps using Gemini models. With this package, you can integrate the Gemini API with an idiomatic Dart interface. and this plugin simplifies the development of intelligent, cross-platform applications for various operating systems. Developers can easily add advanced AI capabilities such as text generation and summarization to their apps with minimal setup.

Scrolling Improvements

With Flutter 3.19, the flutter team improved scrolling behavior and fixed several bugs. Previously, scrolling with two fingers would cause the content to scroll twice as fast, but you can now configure the default Scroll Behavior to ensure consistent scrolling speed.

It is possible to use the MultiTouchDragStrategy.latestPointer option to achieve this. As well as SingleChildScrollView and ReorderableList, crashes and unexpected behavior have been resolved. In addition, two-dimensional scrolling now stops when dragging or tapping during scrolling. As well, the TableView widget in the two_dimensional_scrollables package has been updated with a more polished appearance, support for merged cells, and new features that have been introduced since the last stable release.

AnimationStyle Widget

Flutter 3.19 introduces a new AnimationStyle widget that lets developers customize animation behavior in widgets like MaterialApp, ExpansionTile, and PopupMenuButton. By overriding default animation curves and durations, this widget offers greater control over the visual effects. By using the AnimationStyle widget, developers can specify a custom animation curve and duration for a popup menu. Furthermore, setting AnimationStyle.noAnimation disables animation altogether.

Here’s an example where the popup menu’s animation curve and transition duration are overridden:

popUpAnimationStyle: AnimationStyle(
curve: Easing.emphasizedAccelerate,
duration: Durations.medium4,
),

To disable animation entirely, you can use:

return MaterialApp(
themeAnimationStyle: AnimationStyle.noAnimation,
)

Adaptive Switch

In Flutter 3.19, the component adjusts its appearance to match the native look of macOS and iOS, while on other platforms, it follows the Material Design style. Importantly, it doesn’t rely on the Cupertino library, ensuring that its usage remains consistent across all platforms with the same API.

improves accessibility and text field functionality

With flutter 3.19, all parts of your app that are accessible are identified by an accessibility identifier in SemanticsProperties. In Android, this name appears in a resource-id, whereas in iOS, it’s used in a similar way.

Additionally, support has been added for a MaterialStatesController in TextField and TextFormField, which allows developers to listen for changes in the state of these input fields.

Lastly, there was a bug where the undo/redo history could disappear when using a Japanese keyboard, but now you can edit text before it’s added to the undo history stack, fixing the issue.

Impeller Progress

In the 3.16 release, Flutter introduced Impeller for Vulkan-enabled Android devices, which now covers 77% of Android devices. We’ve been working to bring Impeller’s OpenGL backend up to par with the Vulkan backend, adding features like MSAA. This means that most Flutter apps on Android should render correctly, except for a few upcoming features like custom shaders and full support for external textures.

Flutter developers are encouraged to update to the latest stable version and report any issues they encounter when using Impeller. This feedback is crucial for making Impeller the default renderer on Android later this year. Given the diverse Android hardware ecosystem, detailed feedback about specific devices and Android versions is especially valuable. Additionally, Impeller’s Vulkan backend offers more debugging options in debug builds, but these can impact performance. Therefore, feedback on performance should come from profile or release builds, including timelines from DevTools and a comparison with the Skia backend on the same device. As always, we appreciate feedback that includes a small, reproducible test case to demonstrate the issue.

Deep linking Web Validator

It’s been reported that developers have had difficulty setting up deep links (the links that take users from a website to a specific page in the mobile app). To help, the Flutter team has developed a validation tool. The tool checks if your deep links are set up correctly and guides you through the process of fixing any issues. It’s our pleasure to announce that the Flutter deep link validator is now available in an early version!

In this version, the validator checks your Android setup for web links, specifically the assetlinks.json file. You can use DevTools to access the Deep Links tab and import your Flutter project with deep links, and the validator will let you know if your web file is configured correctly. More information on how to use the tool can be found in the deep link validation tool testing instructions.

We hope this tool makes setting up deep links easier for you. In the future, the Flutter team plans to add support for checking web links on iOS, as well as checking app links on both iOS and Android.

Windows Arm64 Support

With official support for Arm64 on Windows, Flutter applications will run more efficiently and perform better on Arm64 devices. Although in its early stages, this development signifies a significant step forward for Flutter developers looking to optimize their apps for Windows devices. As a result of this support, Flutter apps could run faster and more smoothly on Arm64 devices, improving their user experience. Eventually, Flutter developers will be able to create apps for Windows devices that take full advantage of Arm64 architecture.

Performance Optimizations

A few improvements have been made to the Impeller graphics engine by the Flutter team. By supporting specialization constants in shaders, they were able to reduce the Flutter engine’s code size by 350KB. They also made optimizations to backdrop filters and blurs, improving performance by 20–70% in certain scenarios. One contributor noticed a mistake in how Impeller was handling textures, leading to unnecessary performance overhead. By fixing this, they were able to significantly improve graphics rendering times on devices like the Pixel 7 Pro. Overall, these changes make Flutter apps run smoother and faster on supported devices.

Dev-Tools Updates

In the latest DevTools updates, several new features and improvements have been introduced. One notable addition is the ability to validate deep links setup on Android using a new feature and screen in DevTools. Additionally, there’s now an option in the Enhance Tracing menu to track platform channel activity, which is particularly useful for apps with plugins.

The Performance and CPU profiler screens are now accessible even when there is no connected app, allowing users to reload and view previously saved performance data or CPU profiles. In VS Code, the Flutter Sidebar has been enhanced to enable new platforms if they are not enabled for the current project, and the DevTools menu in the sidebar now offers an option to open DevTools in an external browser window.

Flutter iOS Native Fonts

In Flutter3.19, text now looks more like it does on iPhones. Apple’s design guidelines recommend that smaller text be more spaced out for better readability on mobile devices, while larger text should be more compact to save space. Previously, Flutter was using a more spaced-out font for all text sizes, which was incorrect. Now, Flutter will automatically use the appropriate font style for larger text.

So All of these upgrades together make Flutter a more efficient and high-performing framework. This ensures that developers using Flutter can create applications that work well and provide a great user experience, also I gathered this information by researching multiple websites. If you come across any incorrect or misinterpreted information, kindly bring it to my attention by commenting below.

If you got something wrong? Mention it in the comments. I would love to improve. your support means a lot to me! If you enjoy the content, I’d be grateful if you could consider subscribing to my YouTube channel as well.

I am Shirsh Shukla, a creative Developer, and a Technology lover. You can find me on LinkedIn or maybe follow me on Twitter or just walk over my portfolio for more details. And of course, you can follow me on GitHub as well.

Have a nice day!🙂

--

--

Shirsh Shukla
Shirsh Shukla

Written by Shirsh Shukla

SDE at Reliance Jio | Mobile Application Developer | Speaker | Technical Writer | community member at Stack Overflow | Organizer @FlutterIndore