Rating: 4.64 / 5 Based on 11 reviews
At the end of August, we had some exciting Flutter happenings; not only did LeanCode take part in Flutter Vikings 2022 Conference in Oslo, but also a new stable release - Flutter 3.3 was announced! A new version came along with Dart 2.18.1 and brought some exciting widgets, features, DevTools, and useful VSCode extensions that can improve app development.
In this article, we bring the most important features of Flutter 3.3 closer and recall the biggest changes of the Flutter 3.0 version. Let's see what the Flutter team prepared for devs this time!
Flutter 3.0 was released in May 2022, yet in September 2022, it got updated to the next version - Flutter 3.3.2. Right then, in May, Flutter 3.0 brought many significant changes that moved mobile app development a little further.
First and foremost, Google, in Flutter 3.3, has introduced a new Flutter rendering engine: Impeller, which certainly is the most important announcement from the performance point of view. Previously, Flutter used the Skia engine, which was improved to support new chipsets and hardware acceleration on both mobile platforms, Android and iOS. Overall it brings more predictable performance and is told to solve problems with shadering and performance during scrolling.
To show Impeller's potential Flutter team decided to collaborate with the gskinner development team. They created Wonderous App (iOS and Android), which presents the new Impeller engine possibilities. This app also highlights animations and possible transitions with the newly introduced graphics engine - by presenting eight world wonders. Users can see interesting transitions, unique scrolling patterns, and crafted UI.
Wonderous code is open-sourced, so you can find a complete application code on GitHub. When you download and compile it using Skia and later Impeller, you will see differences in how specific frames are rendered.
The earlier problem with rendering with Skia was that shaders (part of the code that sends instructions to GPU) had to be compiled before the app was run for the first time. Impeller solves this problem, and now when you run the same application but with a new rendering engine, new frames are rendered smoothly.
A new exciting SelectionArea widget was also announced in the Flutter 3.3 release. It gives developers a great possibility - selecting text from multiple separated widgets, which has not been possible until now. Imagine you want to build a banking transaction summary, but you build each detail separately, row by row in column.
If each detail were a Text widget wrapped in a row and put in a column, the user could only copy and select one text at a time. Now all text widgets content can be selected and copied at once (you have smoother control) thanks to SelectionArea.
Simply wrap your column with SelectionArea, and all text elements below SelectionArea can be copied at once. (You pass only one child to SelectionArea, so all text widgets should be wrapped in a Column widget or any other single widget). It works on both desktop and mobile and brings a great possibility to quickly copy text from multiple separately built widgets.
Flutter 3.3 also brings interesting news regarding Material Design 3 (also called Material You) implementation. What is Material 3, you may ask? It is a design language by Google, mainly oriented to Android. It's a well-described design standard that presents design elements, organisms, and rules for accessibility, animations, and more: on both mobile and web.
You can download, compile and run this demo app and see what the new Material 3 implementation in Flutter looks like, or you can test it on this web app demo. Right now, if you run the Flutter app, you will see the Material 2 design - if you want to see Material 3, you need to manually opt-in.
Actually, Material 3 is still in the phase of being brought to the Flutter 3.3 version, which you can see in this GitHub issue. To be specific, this release brings updates on IconButton, Chip, and AppBar.
The usage of laptop trackpads in Flutter web applications was improved within the Flutter 3.3 release. You might get a taste of it on the new Flutter Cookbook page. Now users can point to the widget.
At the bottom of the page, you can see a DartPad with an interactive example containing a list of dish widgets and a row of restaurant clients below. What you can do here is: scroll smoothly through the dish list, hover over a specific dish widget, and later drop it on a specific restaurant client widget. After that client is highlighted, and below the client's name, we can see the number and sum of ordered dishes. Such behavior was not possible before because when dragging and dropping elements, hovering gestures might have been misled by scrolling gestures.
It is also worth mentioning that the new release of Flutter now supports text. Scribble input on iPad using an Apple pencil. Hand-written text input into a TextField is translated to letters in real-time. This is the default behavior in CupertinoTextField, TextField and EditableText.
Flutter 3.3 brings new VS Code extension plugin improvements, such as adding multiple dev dependencies. Just hit Cmd + Shift + P, type Add dependency, and pass comma-separated package names.
Side note:
Another update that we would like to list here wasn't made by Google but can be very useful to all Flutter developers and Testers. Not long since Flutter 3.3. LeanCode open-sourced Patrol - a Flutter-first UI testing framework. Every member of the Flutter community is welcome to use it, report bugs, raise ideas and feature requests to help us make it an even better solution. It can help you test and improve your mobile apps.
We went through the most useful and promising Flutter 3.3 features and tools from a performance, design, and multiplatform point of view. Flutter Framework is developing fast and brings developers tools to build better-performing apps and interact with them using multiple inputs (improved trackpad and new apple pencil).
Also, it aims to speed up app development and facilitate app testing. Some time ago, Flutter used to be the mobile-first framework. Still, it is currently being adapted quickly to other platforms, and we are given a more stable framework on web, desktop and iPadOS. Those are the most significant changes, but we also encourage you to check release notes - to find information about subsequent bug-fix releases.
We are excited about what Flutter's future and its new version might bring us - developers!
Meanwhile, you can also catch up on the recent iOS and Android updates. We summed up breaking changes and new features of both platforms.