Flutter 3.10 adds Material 3 and Impeller — and better performance — for cross-platform development

by: | Jun 28, 2023

If you frequent our blog, you probably know we’re big Flutter fans. Our Flutter development team started using it in 2019, and it is our go-to for creating apps with a single codebase that works across mobile, connected devices, and even desktops.

So, we eagerly anticipated the release of Flutter 3.10, which Google unveiled at its recent I/O 2023 developers conference. And, from what we’ve seen so far, the new release hasn’t disappointed. With updates to the Material Design system, the programming language Dart, and the Impeller rendering engine, Google has made it easier than ever to create a native app experience for iOS and Android faster and more efficiently.

In this post, we dig into the updates and share our perspective on the most important new features for companies and their app development teams.

Mobile updates

For iOS development, wireless debugging is among Flutter’s most compelling new features for top developers like us. Developers can now hot reload/restart their Flutter Apps without a cable — which is a huge time-saver. Also, Cupertino animations, transitions, and colors are getting visually closer to their native iOS counterparts, making a cross-platform app feel more familiar for iPhone users.

For Android development, the Flutter team added Camera X preliminary support. To use it, you just add a dependency on the pubspec.yaml, like this:

Dependencies:
  camera: ^0.10.4 # Latest camera version
  camera_android_camerax: ^0.5.0

Camera X is a Jetpack library aiming to make Android development easier and more streamlined. This first release includes image capture, video recording, and live camera preview capabilities.

Material 3 support

Material Design is the design system created by Google for Android, Web, and Flutter. The third version includes improved system-level user personalization and more accessibility features.

Material 3 is now available if opted-in using MaterialApp(useMaterial3: true)— and is enabled by default on Flutter’s next version. The Material 3 team updated UI components, including DatePickers, TimePickers, and BottomSheets. The release adds new components, such as secondary TabBars, offering a second tier of tabbed contents, and the pair SearchBar and SearchAnchors, which provide predictive text for search queries.

Last, it’s worth noting the time-saving addition of ColorScheme.fromImageProvider(). Before, we had to add all colors to a theme manually. We can more easily add a color scheme from a single “seed” color or directly from an image.

Flutter’s new engine: Impeller

The Flutter team had a very clever plan to ensure multi-platform apps were high-performance: Use a game-like rendering engine. They originally chose Skia, an existing product, but the performance didn’t meet expectations in some situations. That’s why Google created Impeller, built especially for Flutter.

This new rendering engine includes shader precompiling (instead of Skia’s runtime shader compilation) and tessellation. Impeller is now available and enabled by default for iOS and in preview for Android.

If you want to try Impeller’s preview on Android, you can perform the following, but be aware that preview builds are not production-ready:

  • Pass –enable-impeller to the Flutter run command:
$ flutter run --enable-impeller
  • Add the following tag to your AndroidManifest.xml file under the application tag:
<meta-data
  android:name="io.flutter.embedding.android.EnableImpeller"
  android:value="true" />

Dart hits the target

Flutter’s programming language Dart got some notable upgrades too:

  • The language is now more expressive with the addition of records, patterns, and access controls.
  • It adds class modifiers, including interface class, base class, final class, mixin class, and sealed class.
  • Platform integration improves with FFI for Objective-C and Swift (iOS) and FFI for JNI (Android). These changes allow developers to call native code directly from Dart (although jni/jnigen is still experimental and not production-ready).
  • And one of the best updates on Dart: The language’s type system is now 100% sound null safe — i.e., it’s safer to use and less error-prone.

Flutter 3.10 FTW

We’re excited about this latest release and look forward to working with it on our cross-platform app development projects for clients. If you’d like to learn more about Flutter and the recent improvements, see these resources:


Need help with your cross-platform app project?

Since the dawn of the App Store, ArcTouch has helped companies of all sizes build lovable apps and digital products. Our cross-platform app development team are Xamarin/MAUI, React, and Flutter experts. Contact us and let’s build something lovable together.