Flutter 3.0 announced at Google I/O
nav font loadernav font loader
Flutter

Flutter 3.0 announced at Google I/O

Flutter 3.0 was released at Google I/O 2022. This new release completes Flutter's journey to Multi-Platform support.

We share our knowledge and experience in our blog | Somnio Software

by Gianfranco Papa

5 min read · May 13, 2022

Google's Annual Developer Conference took place this week, and we were so excited. There were a lot of announcements across all the technologies and products Google is involved in. For those who missed the event, we highly recommend watching it here, and for those of you who want to learn more about what happened, we are going to speak and dive deep into the Flutter news: how we hit a new version and what this means for the community.

Flutter 3.0

Yes, you heard it right. Flutter 3.0 is here! This release completes the journey of Flutter towards Multi-Platform support because it adds stable support for macOS and Linux. We can now build Flutter apps from a single codebase for 6 different platforms: iOS & Android, Web, Windows, macOS & Linux.

Screenshot from: https://www.youtube.com/watch?v=w_ezWG1yKQQ

Apple Silicon

The latest releases of Dart & Flutter provide support for apple silicon m1 chips. There’s no longer a need to rely on Rosetta translation when compiling code for Flutter apps. In essence, we now have 2 versions of the Flutter SDK on macOS: arm and intel. This is a huge deal for developers previously that owned an Apple Silicon m1 chip because they will start seeing a lot of improvements in performance and that is peak developer productivity. Moreover, it’s now possible to build both x64 and ARM64 binaries, meaning that the SDK delivers code compiled natively for ARM64 whereas before it was only possible to do this by using Rosetta translation. So users will ultimately have a better overall experience.

Flutter DevTools

Screenshot from: https://docs.flutter.dev/development/tools/devtools/overview

There were also announcements of some really cool new features for Flutter DevTools, the suite of performance and debugging tools for Dart and Flutter. Here are some of the most important ones:

  • Enhanced tracing in the Performance tab.
  • Improvement on the Network Tab
  • Dedicated plugin for Provider to keep track of change notifier

Put Flutter to work

Flutter can now be packaged as a complete artifact. This might be a fascinating use case for developers who haven’t tried Flutter yet. The idea of this repository is to provide an example of how Flutter can save development cycles. The difference here is that you can add Flutter as a library and integrate it into your native platform without even having to download Flutter SDK on your machine in the first place.

Dart 2.17 languages improvements

Photo from: https://medium.com/dartlang/dart-2-17-b216bfc80c5d

Dart, the secret sauce of Flutter, was also updated. And these are some of the major improvements we have:

Enhanced enumerations

When working enums we can now give additional fields, methods, getters, and operators. They can also implement interfaces and apply mixins. Basically, they can do almost everything that a class can do. This is extremely useful and flexible in cases where an enum just works for our use case.

enum Language {
  dart("2.17.0"),
  ruby("3.1.2"),
  python("3.10.4");

  final String version;
  const Language(this.version);

  @override
  String toString() => "The latest version is $version";
}

void main() {
  print(Language.dart);
  print(Language.ruby);
}

Named arguments

There are fewer restrictions for named arguments, so we can order them in whatever way we want.

class Language {
  Language(this.name);
  final String name;
}

class Dart extends Language {
  Dart(super.name, this.version);
  final String version;
}

Super constructors

We can now use super to pass a parameter to the super constructor implicitly. Similarly, on what we do with the “this” notation, the super syntax lets us reduce the boilerplate to achieve that same result.

class Language {
  Language(this.name);
  final String name;
}

class Dart extends Language {
  Dart(super.name, {required this.version});
  final String version;
}

void main() {
  final dart = Dart(version: '2.17.0', 'dart');
  print(dart.version);
}

To know more updates about Dart 2.17 you can visit this link

Firebase improvements

There were some important announcements on Firebase as well. Specifically, how it integrates with Flutter. As shown in here the 62% of Flutter apps are using Firebase. Moreover, Firebase announced official support for Flutter. Many of us who already use Flutter and Firebase may be seeing this as something weird, but what does this actually mean? The 2 products are going to work together even better now. For instance, we can now target Flutter when creating a new Firebase project.

Furthermore, there were also improvements to Crashlytics, Firebase crash reporting service. Now it’ll be easier to identify the root of a problem thanks to having a full crash report that shows both native and dart symbols for the full stack trace.

Flutter Games Toolkit

Photo from: https://flutter.dev/games

It has never been a better time to start creating a game using Flutter. This is something that has been seen for a long time, especially with the support of some libraries such as Flame. Flutter's Announcement of Casual Games Toolkit is a set of templates that provides us with many examples and best practices on how to make a game using Flutter.

Likewise, as it’s pretty common to monetize games with ads, the examples also show how to integrate the Google Mobile Ads plugin to display banners in your game.  One of the best examples of building a Flutter game was the Pinball game which was presented before the Google I/O. It’s a great place to start as the project is not only using Flutter, Flame, and Firebase but also contains great practices and detailed documentation.

Other updates

It is really complicated to summarize everything that happened in only one blog post because there were a lot of information and updates. So here we have other important updates for Flutter and the community.

  • 500K apps built with Flutter
  • Material 3 was released with optional integration in Flutter
  • go_router library is now owned by Flutter
  • More Widgets and Foldable Device Support
  • Improved Desktop accessibility
  • Cascading menus
  • Desktop system menu support
  • Theme Extensions
  • iOS's deployment process has become easier

What happens next?

Well, in case you missed it, here’s the virtual photo we took of everyone after the event! You can easily spot me on top of the Flutter logo.

If you want to rewatch the full content, you can enter this link to watch it on-demand. You’ll find the Google I/O keynote and the Developer keynote. Moreover, you definitely have to watch What’s new in Flutter. If you want a summary in less than 12 minutes of everything that happened, here’s a useful link. In addition to the keynotes, there were technical sessions and learning labs that we suggest watching as well. Here are the ones related to Flutter.

We are very excited to be part of the path that Flutter is traveling. Having seen the improvements since Flutter 1.0 beta, going through important releases like what happened at Google I/O 2021 where Flutter 2.2 was announced and now reaching a milestone with Flutter 3.0.

We hope you enjoyed the event as much as we did!


by Gianfranco Papa

5 min read · May 13, 2022

Gianfranco Papa is our CTO and is in charge of all the technical issues and challenges. Besides being a great reference for the team he is an amazing football player.

Firebase
Events
Cross-platform

Let’s create successful apps together!