Journal logo

Flutter 3.3 and Its Released Features

Important Flutter Features to Look At

By Cynoteck Technology SolutionsPublished about a year ago 7 min read

Flutter 3.3 has been recently released and it brings updates to various features such as the Flutter web, desktop, text handling and performance improvements. Additionally, new updates have been introduced to the go_router package, DevTools and VS Code extensions.

The release of Flutter 3 has also been a significant one, as it has stable support for all platforms. Since its release, Flutter has seen a large number of pull requests merged, with over 5,687 pull requests being merged.

Flutter 3.3 is a major update to the popular open-source mobile app development framework created by Google. This release brings a host of new features and improvements that make it easier to develop high-performing and visually stunning apps for both iOS and Android platforms.

Flutter 3.3 is a significant release in the Flutter ecosystem that brings a number of new features and improvements to the framework. As such, it plays an important role in Flutter app development services, providing developers with the tools they need to create high-performing, visually stunning apps for both iOS and Android platforms.

Framework

Global Selection

Previously, it was not possible to select multiple elements in a Flutter web app using a sweeping gesture like in native web applications. With the latest release, the SelectableArea widget has been introduced which allows for easy selection of multiple elements within the widget's child. This means that any child of the SelectableArea widget can now have selection enabled without any additional configuration.

Trackpad Input

With the release of Flutter 3.3, there has been an improvement in support for trackpad input. This provides a more seamless and smoother experience when using a trackpad to interact with Flutter apps. Before this update, trackpad scrolling in Flutter apps could lead to misinterpretation of the input, as it would be recognized as a drag gesture instead of a scroll gesture.

An example of this behavior can be seen by visiting the "Drag a UI element" page in the Flutter cookbook. By reducing the window size, creating a scrollbar, hovering over the upper part of the window, and then using a trackpad to scroll, it can be observed that prior to installing Flutter 3.3, scrolling on a trackpad would result in dragging the item, as Flutter would dispatch emulated general events.

However, after installing Flutter 3.3, using a trackpad to scroll will correctly scroll the list, as the "scrolling" gesture is delivered, which is not recognized by the cards but it is recognized by the scroll view.

Scribble

Flutter 3.3 now supports Scribble handwriting input using the Apple Pencil on iPadOS, thanks to the contributions of community member fbcouch. This feature is automatically enabled on CupertinoTextField, TextField, and EditableText. Upgrading to Flutter 3.3 will give your end users the ability to use this feature.

Text Input

This release includes new functionality to enhance rich text editing experience by providing more detailed information about text updates through the TextInputPlugin. The TextInputClient has been updated to deliver deltas, or the differences between the old and new text editing states, through the use of TextEditingDeltas and the DeltaTextInputClient.

This allows for the creation of input fields that can adjust the styling of specific ranges of text as the user types. To see this feature in action, refer to the Rich Text Editor demo for an example.

Material Design 3

The Flutter team is actively working on migrating more components to the latest Material Design 3 guidelines. This includes updates to the IconButton, Chips, and AppBar widgets, with the addition of large and medium variants. To track the progress of this migration, you can refer to the Bring Material 3 to Flutter project on GitHub.

Similarly, the Chips component has also been updated to support Material Design 3, and now includes new properties for controlling the size and shape of the chips. This allows developers to create chips that are better suited to the specific needs of their app, and provides more flexibility in terms of design.

Desktop

Windows

The Windows version of Flutter desktop applications can now be set through the pubspec.yaml file and build arguments, making it easier to implement auto updates for end users. This feature is now consistent with how other platforms set their versions, and it was introduced in Flutter version 3.3.

To learn more about this feature, refer to the documentation on docs.flutter.dev and the migration guide. Note that projects created before Flutter 3.3 will need to be updated to take advantage of this feature.

One of the major new features in Flutter 3.3 is the ability to set the version of a Windows desktop application directly from the pubspec.yaml file and build arguments.

This makes it much easier for developers to enable auto-updates for their apps, ensuring that end users always have access to the latest features and bug fixes. This feature is now consistent with how versions are set on other platforms, making it more streamlined for developers to manage the versioning of their apps.

Packages

Go Router

The Flutter team has released an updated version (4.3) of the go_router package, which simplifies routing by providing a declarative, URL-based API. This makes it easier to design navigation logic that works across mobile, desktop, and web apps.

The latest version allows apps to redirect using asynchronous code, and there are some breaking changes in this version. For more information, refer to the Navigation and routing page on docs.flutter.dev and the migration guide for more details.

Flutter 3.3 also include updates to Go_router package, which is a package maintained by Flutter team to extend Flutter's native navigation API. The latest version (4.3) enables apps to redirect using asynchronous code and includes other breaking changes, making it easier to navigate and handle deep-links.

This package provides a declarative, URL-based API, which makes it much simpler to design routing logic that works across mobile, desktop, and web apps.

App Bar

Another new feature in Flutter 3.3 is the introduction of large and medium variants for the AppBar widget. This allows developers to create different versions of the AppBar that are optimized for different screen sizes and resolutions.

This is particularly useful for apps that need to support a wide range of devices, as it allows developers to create a consistent and visually appealing experience across all devices.

Components

In addition to these new features, Flutter 3.3 also brings a number of improvements to existing components. For example, the IconButton widget has been updated to support Material Design 3 guidelines.

This means that developers can now create icons that are consistent with the latest Material Design guidelines, ensuring that their apps look and feel modern and polished.

Web Assembly

Another important feature in Flutter 3.3 is the improved support for web assembly. This allows developers to create web apps that are able to run at near-native speeds, providing a more responsive and visually stunning experience for users.

With web assembly, developers can take advantage of all of the features and capabilities of the web, while still being able to use the familiar Flutter development environment.

Performance

Performance Improvement

Flutter 3.3 also includes a number of performance improvements, such as a new mechanism for managing the GPU cache, which results in smoother scrolling and animations. Additionally, the Flutter team has also worked to reduce the memory footprint of the framework, resulting in apps that are faster and more responsive.

The release of Flutter 3.3 includes improvements to the way images are loaded from assets, increasing performance and reducing pressure on the Dart garbage collection system.

The previous version of Flutter used to have multiple copies of compressed images when using the ImageProvider API. This would cause the compressed data to be copied into the native heap, then again into the internal storage of a ui.ImmutableBuffer when exposed to Dart as a typed data array.

This version introduces a new method, ui.ImmutableBuffer.fromAsset, which allows compressed image bytes to be loaded directly into the structure used for decoding.

This improves the performance and eliminates the need for additional copies and scheduling overhead. As a result, microbenchmarks have shown that image loading time has improved by almost 2x, providing a faster and more efficient image loading process for developers.

Stability

In Flutter's 2.10 stable release, the Dart team had enabled an optimization called pointer compression on iOS. However, it was brought to their attention that this optimization had an unintended side effect, which reduced the amount of memory available for use by other components, such as Flutter plugins.

This happens because pointer compression reserves a large virtual memory region for Dart's heap, which may cause this large reservation to consume more virtual memory than the total allowed on iOS.

To mitigate this, they have disabled pointer compression on iOS to increase the memory available for non-Dart parts of a Flutter application. However, they will consider re-enabling this optimization in the future when there is an entitlement that increases the maximum allowed virtual memory allocation for an application, and it's available on all supported versions of iOS.

API Improvements

Additionally, in this release, they introduced a new way to catch all errors and exceptions in an application by setting the PlatformDispatcher.onError callback, instead of using a custom Zone. This change will improve the application start-up time and for more information, developers can refer to the updated Handling errors in Flutter page on docs.flutter.dev.

Also, The Flutter team has improved the FragmentProgram changes by allowing GLSL fragment shaders listed under a shaders: section in the Flutter manifest of an application's pubspec.yaml file to be automatically compiled and bundled with the application as an asset, which eliminates the need to manually compile shaders using third-party tools.

And in future releases, they plan to change the Engine's FragmentProgram API to only accept the output of Flutter's build tooling, as described in the FragmentProgram API Support improvements design doc.

Wrapping Up

Overall, Flutter 3.3 is a significant update to the popular mobile app development framework, bringing new features and improvements that make it easier to create high-performing and visually stunning apps for both iOS and Android platforms.

Whether you're a seasoned developer looking to create more polished and modern apps, or a newcomer looking to learn more about app development, Flutter 3.3 is definitely worth checking out. With the community growing and more apps being built, it's definitely a good choice for developing apps.

business

About the Creator

Cynoteck Technology Solutions

Cynoteck Technology Solutions is a Top-Notch CRM Development Company specializing in Dynamics 365 CRM, Salesforce Development, Mobile app development, Artificial Intelligence, Web application Development, and Digital marketing.

Enjoyed the story?
Support the Creator.

Subscribe for free to receive all their stories in your feed. You could also pledge your support or give them a one-off tip, letting them know you appreciate their work.

Subscribe For Free

Reader insights

Be the first to share your insights about this piece.

How does it work?

Add your insights

Comments

There are no comments for this story

Be the first to respond and start the conversation.

    Cynoteck Technology SolutionsWritten by Cynoteck Technology Solutions

    Find us on social media

    Miscellaneous links

    • Explore
    • Contact
    • Privacy Policy
    • Terms of Use
    • Support

    © 2024 Creatd, Inc. All Rights Reserved.