Flutter 3.3: What’s New

Flutter

Flutter Vikings

Update

Summary

On August 31, during Flutter Vikings in Oslo, Flutter 3.3 was released, bringing numerous updates, fixes, and features. These include support for Dart 2.18, new Scribble features, improved touchpad input, enhanced text input handling, and integration with Material Design 3. The update also enhances global selection, desktop app versions for Windows, and introduces the go_router package for navigation.

Key insights:
  • Scribble Support: Enables freehand drawing on iPad using Apple Pencil, enhancing user interaction.

  • Dart 2.18: Extends support for Objective-C and Swift, improving API interoperability.

  • Touchpad Input: Offers smoother control and reduced misinterpretation for a better user experience.

  • Global Selection: Introduces selectable regions for adaptive text selection controls.

  • Material Design 3: Updates to IconButton, Chips, and AppBar for enhanced UI consistency.

  • Windows App Versions: Simplifies version setting from pubspec.yaml file, facilitating auto-updates.

  • go_router: New routing package simplifies navigation logic across mobile, desktop, and web.

  • VS Code Enhancements: Improvements in dependency management and extension updates.

  • Cached Raster: Increases image loading performance by reducing data copies and garbage collection pressure.

  • iOS Pointer Compression Disabled: Frees up memory for non-Dart parts of applications, improving overall performance.

  • PlatformDispatcher.onError: Replaces custom Zone for error handling, enhancing app load times.

  • Bitcode Deprecated: Bitcode support will be dropped, aligning with Apple’s latest submission guidelines.

Introduction

On 31 August, on the first day of Flutter Vikings in Oslo, the release of Flutter 3.3 was announced which contained a set of updates, fixes, and new features. This release builds upon the feature set of Flutter 3.0, support for Dart 2.18, Material 3 modifications, tablet and desktop support and much more.

Flutter has been growing in popularity immensely over the past few years and it is gradually transcending the notion of it being only a mobile app SDK. Let’s get into the promising features Flutter 3.3 delivers.

Scribble

Scribble is a lightweight library for freehand drawing in Flutter supporting pressure, and variable line width. Flutter 3.3 has announced Support for Scribble on iPad using Apple Pencil.

This feature is enabled by default on CupertinoTextField(iOS text field.), TextField (text input widget) and EditableText (lets user edit text). In order to enable this feature on your iPad, you would have to upgrade to Flutter 3.3.

Dart 2.18

Objective-C and Swift codes are used to call APIs on iOS and macOS devices. Dart 2.18 extends its support to these languages and can now call both these languages. Dart supports this interoperability mechanism in any app from the CLI app to backend code to a Flutter UI.

This new mechanism utilizes the fact that Objective-C and Swift code can be exposed as C code based on API bindings. The Dart API wrapper generation tool, ffigen can create these bindings from API headers.

Touchpad input

Flutter 3.3 provides improved support for touchpad input. This not only provides richer and smoother control but also reduces misinterpretation in certain cases owing to Flutter’s focus on mobile platforms, apps are designed for a wide range of rich touch gestures.

Using a pointer to directly manipulate content is very intuitive on a touch screen, but clicking and dragging with a mouse to perform that very same interaction is not intuitive. Proper implementation of trackpad gestures will greatly improve the experience of these interactions.

Global Selection

Flutter web apps were not quite top quality when it came to selecting text. Flutter widgets are not selectable by default. The global selection widget, however, introduces an area for user selections with adaptive selection controls, creating a SelectableRegion which gives the users platform-specific selection controls.

Text input

The text input plugin is a low-level interface to the system's text input control. To start interacting with the system's text input control, call attach to establish a TextInputConnection between the system's text input control and a TextInputClient.

To improve support for rich text editing, Flutter 3.3 brings the ability to receive granular text updates from the platform’s TextInputPlugin.

Previously, the TextInputClient only delivered the new editing state with no delta between the old and new, TextEditingDeltas and the DeltaTextInputClient fill this information gap.

Material Design 3

As part of Android 12, Google announced incorporating Material Design 3 into Flutter which included the color theming engine, wallpaper-based themes, and drafting of the app’s color scheme. It introduces other things too, including support for Material Design 3.

Flutter 3.3 includes updates to IconButton (A picture printed on a Material widget that reacts to touches by filling with color), Chips (Compact elements that represent an attribute, text, entity, or action, and variants for AppBar (toolbar).

Windows

Previously, unlike other platforms, the Windows desktop application’s version was set by a file specific to the Windows app.

Windows desktop app versions can now be set from your project pubspec.yaml file and build arguments, makinging it easier to enable auto-updates so that your clients always receive the most recent version of a program.

go_router

go_router is a Declarative Routing Package for Flutter. This package uses the Flutter framework's Router API to provide a convenient, URL-based API for navigating between different screens.

In order to support building apps with complex navigation needs, Flutter 3.3 has released a new version of the go_router package, making it simpler to design routing logic that is compatible with mobile, desktop, and the web.

The go_router package simplifies routing by providing a declarative, URL-based API, making it easier to navigate and handle deep links.

VS Code extension enhancements

Visual Code extensions let you add languages, debuggers, and tools to your installation to support your development workflow.

Flutter 3.3 includes several updates for VS Code extension including improvements for adding dependencies. Using the command Dart: Add Dependency, you can add multiple, comma-separated dependencies.

Improvements to Cached Raster

The Cached Raster function creates a preprocessed cache at the point in the function chain where it's added. Flutter 3.3 increases the performance of loading images from assets by eliminating copies and reducing Dart garbage collection pressure. Previously, when loading asset images, the ImageProvider API required the compressed data to be copied multiple times.

iOS pointer compression disabled

In the Dart 2.10 release, Dart’s pointer compression optimization on iOS was enabled. Pointer compression works by reserving a large virtual memory region for Dart’s heap, leading to a reduction in heap size.

Since the total virtual memory allocation allowed on iOS is less than on other platforms, this large reservation reduces the amount of memory available for use by other components that reserve their own memory, for example, Flutter plugins.

While disabling pointer compression increases the memory consumed by Dart objects, it also increases the memory available for non-Dart parts of a Flutter application, which is more desirable overall.

PlatformDispatcher.onError

The Platform Dispatcher class is the most basic interface to the host operating system's interface. This is the central entry point for platform messages and configuration events from the platform.

In previous Flutter versions, you had to manually configure a custom Zone in order to catch app errors. However, custom Zones slowed down app load time as they would reduce the number of optimizations in Dart’s libraries.

Flutter 3.3 replaces custom Zone with the PlatformDispatcher.onError callback,

Bitcode Deprecated

Bitcode is an Apple technology that enables you to recompile your app to reduce its size. The recompilation happens when you upload your app to App Store Connect.

Bitcode will no longer be accepted for iOS app submission and projects with bitcode enabled will emit a build warning in this version of Xcode. Flutter will also be dropping support for Bitcode in a future stable release.

Other Insights

Got an app?

We build and deliver stunning mobile products that scale

Got an app?

We build and deliver stunning mobile products that scale

Got an app?

We build and deliver stunning mobile products that scale

Got an app?

We build and deliver stunning mobile products that scale

Got an app?

We build and deliver stunning mobile products that scale

Our mission is to harness the power of technology to make this world a better place. We provide thoughtful software solutions and consultancy that enhance growth and productivity.

The Jacx Office: 16-120

2807 Jackson Ave

Queens NY 11101, United States

Book an onsite meeting or request a services?

© Walturn LLC • All Rights Reserved 2024

Our mission is to harness the power of technology to make this world a better place. We provide thoughtful software solutions and consultancy that enhance growth and productivity.

The Jacx Office: 16-120

2807 Jackson Ave

Queens NY 11101, United States

Book an onsite meeting or request a services?

© Walturn LLC • All Rights Reserved 2024

Our mission is to harness the power of technology to make this world a better place. We provide thoughtful software solutions and consultancy that enhance growth and productivity.

The Jacx Office: 16-120

2807 Jackson Ave

Queens NY 11101, United States

Book an onsite meeting or request a services?

© Walturn LLC • All Rights Reserved 2024

Our mission is to harness the power of technology to make this world a better place. We provide thoughtful software solutions and consultancy that enhance growth and productivity.

The Jacx Office: 16-120

2807 Jackson Ave

Queens NY 11101, United States

Book an onsite meeting or request a services?

© Walturn LLC • All Rights Reserved 2024

Our mission is to harness the power of technology to make this world a better place. We provide thoughtful software solutions and consultancy that enhance growth and productivity.

The Jacx Office: 16-120

2807 Jackson Ave

Queens NY 11101, United States

Book an onsite meeting or request a services?

© Walturn LLC • All Rights Reserved 2024