BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Flutter 3.27 Promotes New Rendering Engine Impeller, Improves iOS and Material Widgets, and More

Flutter 3.27 Promotes New Rendering Engine Impeller, Improves iOS and Material Widgets, and More

The latest version of Google's cross-platform UI kit, Flutter 3.27, brings a wealth of changes, including better adherence to Apple's UI Guidelines thanks to a number of improved Cupertino widgets, new features for CarouselView, list rows and columns, ModalRoutes transitions, and so on. Furthermore, the new release makes the Impeller rendering engine the default, with improved performance, instrumentation support, concurrency support, and more.

Cupertino is a collection of widgets that align strictly with Apple's Human Interface Guidelines. Flutter 3.27 updates a few to increase their fidelity, including CupertinoCheckbox, CupertinoRadio, and CupertinoSlidingSegmentedControl. It also extends CupertinoCheckbox, and CupertinoSwitch to make them more configurable, and brings CupertinoButton on a par with the latest customizability options introduced in iOS 15. Other improvements affect CupertinoActionSheet, CupertinoContextMenu, CupertinoDatePicker, and CupertinoMagnifier.

On the front of Android-native Material UI, Flutter 3.27 extends CarouselView with CarouselView.weighted, which allows you to define more dynamic layouts using the flexWeights parameter to specify the relative item weight occupied within the carousel view. Additionally, SegmentedButton can be aligned vertically and a few widgets have been fixed to align better with Material 3 specifications.

Flutter 3.27 also improves ModalRoutes, text selection, and rows and columns spacing. ModalRoutes, which have the peculiarity of blocking interaction with previous routes by occupying the entire navigator area, now enable the exit transition from a route to sync up with the enter transition of the new route, so they play nicely together. Text selection now supports Shift + Click gesture to move the extent of the selection to the clicked position on Linux, macOS, and Windows. Rows and Columns may use a spacing parameter which makes it easier to offset them from each other.

After over one year in preview, the new Impeller rendering engine has been promoted to default on modern Android devices, replacing the old one, Skia. Skia is still available as an opt-in in case of compatibility issues. Impeller attempts to do at compile times a number of tasks that Skia does at runtime, such as building shaders and reflections and creating pipeline state objects upfront, and improves caching to make performance more predictable. It also improves debug support by labeling textures and buffers and being able to capture animations to disk without affecting rendering performance. When necessary, Impeller can distribute single-frame workloads across multiple threads to improve performance.

Going forward we will continue to make improvements to Impeller’s performance and fidelity on Android. Additionally, we intend to make Impeller’s OpenGL backend production ready to remove the Skia fallback.

Other improvements worth mentioning are improved rendering performance on iOS, support for the Swift Package Manager, as well as edge-to-edge and freeform support for Android. Do not miss the official announcement to get the full details.

About the Author

Rate this Article

Adoption
Style

BT