Flutter’s popularity has grown immensely over the last few years. The main reason is that they continue to provide evidence of growth with new updates. Flutter 3, announced almost 3 months ago, was a huge milestone that offered reliable support for application development for all six platforms. But they didn’t just stop there. On August 31, Flutter announced the launch of Flutter 3.3 at the Flutter Vikings conference. The version has merged around 5,687 pull requests.
The update has added some more refinements and improvements to Flutter 3 like Dart 2.18 support, new components of material 3, Scribble, some exciting extensions, and much more. Let’s have a look.
Introducing Global Selection
Flutter didn’t really show good behavior when it came to text selection. You couldn’t select the widgets by default with a single swiping gesture. But no more of that fuss. Flutter 3.3 has introduced this new feature of the “SelectableArea” widget, allowing adaptive selection controls to web app developers.
To get the feature just wrap your route body with the widget of “SelectableArea”. Flutter will do the rest for you.
Rich Text Editing with Text Input
Flutter 3.3 has now improved its rich text editing support. Now you can receive granular text updates from “TextInputPlugin”. In previous updates, the “TextInputPlugin” only provided the new states with no delta between the old and the new. But this informational gap now gets filled with “TextEditingDeltas” and “DeltaTextInputClient”.
An Improved Touchpad (trackpad) Input
Flutter 3.3 offers improved touchpad input support for its users. With this feature, you get a much smoother and richer control, further reducing any chances of misinterpretation. Say goodbye to clicking and dragging, simply manipulate content with the pointer on the touch screen. With a wide range of different touch gestures, there won’t be any awkward interactions.
You can further read about the pan gesture, zoom gesture, rotate gesture, and other details here.
A Jump to Dart 2.18
Like most of the past Flutter launches, Flutter 3.3 has also bumped up Dart language by introducing Dart 2.18. The 2.18 version has extended its support to Swift and Objective-C codes with “ffigen” – an API wrapper generation tool. The process of making API calls is now streamlined. This is surely pleasing news for iOS and Mac developers. The developers of Android and iOS are also allowed to use platform-specific code for the required HTTP requests.
Flutter 3.3 now also supports Scribble – a free-hand drawing tool for iPad using the input of Apple Pencil. It has already been enabled by default on “TextField”, “Cupertino TextField” (ios-style textfield), and “EditableText”. Upgrade to Flutter 3.3 to get this feature.
In previous Flutter versions, you could only set your windows desktop application’s version by the file that’s specific to the window app itself. But now, you can set your app versions and build arguments from the project “pubspec yaml” file. Now it’s easy to enable auto-updating and get the recent version to your client.
Material Design 3 is Here!
Material design 3 new components have now been incorporated in the Flutter 3.3 version with updates on “Chips”, “IconButton” and medium and large variants of “AppBar”. The following images will help you get a better idea.
Impeller – A new rendering Engine on its Way
Flutter is also releasing a new replacement for Skia. Flutter developers can now test this new rendering layer – Impeller. The purpose of this improvement is to give a significant boost to the Android and iOS apps with its runtime taking complete advantage of hardware-accelerated APIs like Vulkan for Android and Metal for iOS.
You can surely expect an almost silkier animation on your Flutter applications. Impeller has also removed the need for runtime shader compilation which has been a major source of frame time janks in the applications. Impeller is being tested actively and iOS developers have been asked to submit their reviews on it too. Impeller for Android is still under process.
Things can get complex while developing an app with complicated navigation needs. But now it’s easy to design a routing logic that will work fine across the web, desktop, and mobile through go_router. It is a Declarative Routing Package designed by the Flutter team. By providing a declarative, URL-based API, this package gives you an easy way to handle deep links and navigation across different screens.
VS Code Extension Enhancement
tools to your installation that will later help your development workflow. Almost every version of Flutter has released some enhancements of Visual Code Extension and Flutter 3.3 has done it too. By using Dart: Add Dependency, you can now add multiple, comma-separated dependencies in a single step.
An Update on DevTools
The new update comes with UX and some performance improvements to data display tables. There will be a less jittery and much faster scrolling experience of large lists of events.
How has the performance improved?
Raster Cache Improvements
The improvement resulted in faster image loading capability by reducing Dart GC (Garbage Collection) pressure and the need for multiple copies. Before this, for the loading of asset images, the “ImageProvider” needed the compressed data to be copied many times. By the addition of “ui.ImmutableBuffer.fromAsset”, you can load the compressed image directly into the structure utilized for decoding. The improvement has reduced the loading time to almost half of what it was before.
Deprecation of 32-bit iOS
The new version no longer supports iOS versions 9, 10, and 32bit iOS devices.
Deprecation of Bitcode
Bitcode helps you in reducing an app’s size through recompilation. In the upcoming Xcode 14 release, bitcode most probably will not be allowed for iOS app submission. Although it is disabled by default, for the projects that have it enabled, it will emit a built warning.
No iOS Pointer Compression – A Step towards Stability
Pointer compression reserves a huge virtual memory region for Dart’s heap, reducing the heap size. However, compared to other platforms, iOS has less virtual memory allocation. So because of pointer compression, the amount of available memory for other components like Flutter plugins get less..
Now that the pointer compression has been disabled Dart objects will consume more memory but the available memory for non-Dart parts will also increase. So overall, it’s a desirable change.
API Improvement – PlatformDispatcher.onError
In previous versions, to capture all the errors and exceptions, you had to configure a custom Zoon manually. And it slowed down the application’s load time. In Flutter 3.3, you can catch these errors with PlatformDispatcher.onError callback.
The above-mentioned updates may not be that appealing, but the significance of these new improvements cannot be ignored. Flutter 3.3 is proof that the Flutter community will keep on making things easier for its developers.
If you are new to Flutter, get further information from our blogs.