September 2022: Flutter 3.3, Flutter Vikings, GoRouter 5.0 and Other News

If you haven't been paying attention to Flutter over the last month, you've missed a lot of cool stuff!

There's so much to cover between the Flutter 3.3 announcement, Flutter Vikings, and other exciting developments!

So let's dive in with my September newsletter, starting with the big announcement. ๐Ÿ‘‡

Quick note: I'm hiring a Flutter content creator! Learn more here.

Flutter 3.3 is Here

Flutter releases are always full of goodies, and the latest one is no exception.

From the early preview of Impeller (the next-generation rendering layer) to the ongoing migration of Material Design 3 components to Flutter, to improved support for trackpad input and global text selection, many things have been cooking up.

If you've missed the official announcements, here they are:

As Flutter continues to gain momentum and a growing list of companies is now using it, I wonder where we'll be this time next year. ๐Ÿ”ฅ

๐Ÿ’ป Wonderous app and Flutter Animate package

Along with the latest Flutter release, I've been very impressed by the new Wonderous app by the gSkinner team:

The iOS App Store version already shows what Impeller can do on a production-quality app and sets a new benchmark for animation-rich experiences in Flutter.

Moreover, the Wonderous app uses a new open-source animations package that makes it easy to combine complex effects with a lightweight API.

For all the details, check the official blog post:

Flutter Vikings Summary

With an impressive speaker lineup and a total of 39 talks over two days, this was a massive Flutter conference, and the entire conference playlist has been posted on YouTube. ๐Ÿ‘

I admit that I haven't managed to catch up with all the talks yet. ๐Ÿ˜…

But what I haven't missed is Remi's talk about Riverpod 2.0, where he showed a small clone of pub.dev built with Flutter (source code here).

Hint: in the future, Riverpod will leverage code generation to automatically choose the right kind of provider for us.

If you use Riverpod in your apps, I highly recommend watching this (Remi's talk starts at 3:32:52):

And if you want to catch up with the remaining talks, you can find the full agenda and playlist here:

Other Flutter Articles

Over the last month, these were my two favourite articles from the community. ๐Ÿ‘‡

๐Ÿ“ Take Your Flutter Animations to The Next Level โ€” Flutter Vikings Talk

Straight after Flutter Vikings, Roaa Khaddam has turned her talk into a whole blog post, complete with source code and illustrations.

If you want to learn what it takes to build animated scroll views, complex hero animations, gyroscope effects, and more, read this:

๐Ÿ“ You Might Not Need State Management: The Flutter Edition

App architecture and state management are two of my favourite topics in Flutter.

So I particularly enjoyed this fresh take by Ryan Edge, explaining how Riverpod 2.0 helps us implement well-defined patterns such as fetching, caching, and managing mutations, just like React Query has done in the React world.

Ultimately, Riverpod exists to help us spend less time on architecture problems so that we can focus more on solving business problems.

Read the full post here:

Other Flutter News

In addition to all the above, other major announcements have been made. ๐Ÿ‘‡

๐Ÿงฑ GoRouter 5.0

The highly awaited version 5.0 of GoRouter is now here!

This is a major release that introduces a host of new features, including:

  • asynchronous redirects
  • new ShellRoute for nested navigation support (since v4.5)
  • new RouterConfig interface for easier initialization inside MaterialApp

All the breaking changes are documented in the go_router 5.0 Migration Guide. But it appears that the old documentation website is not updated yet.

Hopefully, the Flutter team will update the documentation soon.

For now, you can check out the new release on pub.dev:

And expect some new content from me, covering the new APIs in more detail. ๐Ÿ‘

๐Ÿ›  Appwrite 1.0 is now stable + 5 Firebase alternatives

Appwrite is an open-source backend server and a Firebase alternative that has been highly praised for its Flutter/Dart integration.

Appwrite is very easy to set up as a self-hosted solution, and hosted Appwrite services are coming soon.

To learn more, read the official announcement on Reddit:

Overall, 2022 seems to be a great year for BaaS solutions. So much so that Fireship has recently made a video about 5 Firebase alternatives:

It's great to see so much innovation in this space. All these competitive solutions (with affordable pricing) can only make our life easier as Flutter developers. ๐Ÿ‘

๐Ÿ›  Announcing Zapp! Public Beta

I first covered the Zapp editor in my July newsletter.

So it's great to see that the Invertase team keeps adding new features.

I'm delighted with the new Live Previews and Embedding capabilities, which could come in handy for future tutorials on my site. ๐Ÿ™‚

Read the official announcement to learn more:

๐ŸŽฌ New videos by the Flutter team

The Decoding Flutter playlist is one of my go-to places for intermediate and advanced Flutter content.

And the last two videos did not disappoint, covering some less known topics such as scroll controllers and intrinsic widgets.

If you ever wanted to implement custom scroll behaviors on desktop, or simply understand how Flutter implements the native iOS scroll-to-top behaviour under the hood, check this video:

And if you've been struggling with custom child alignment inside a Row or Column widget, this comes in handy:

Latest on Code with Andrea

After completing my Flutter Foundations course last month, I took a much-needed vacation to Italy. ๐Ÿ‡ฎ๐Ÿ‡น

But that hasn't stopped me from thinking about Flutter. ๐Ÿ’™

And most recently, I published two new articles. ๐Ÿ‘‡

๐Ÿ“ How to Read Localized Strings Outside the Widgets using Riverpod

When we localize a Flutter app, we can use the BuildContext to obtain the localized strings inside our widgets.

But if we have some business logic that lives outside our widgets, how can we read the localized strings?

This article covers all the details:

๐Ÿ“ How to Store API Keys in Flutter: --dart-define vs .env files

When it comes to API keys and security, you should avoid two major mistakes:

  • Committing a secret key to version control, making it visible to everyone on the Internet ๐Ÿคฏ
  • Forgetting to obfuscate your API keys, making it easier for attackers to reverse engineer your app and extract the keys ๐Ÿ› 

The guide above shows how to avoid these mistakes and covers three different techniques for storing API keys on the client, along with their trade-offs:

๐Ÿ“ฅ Special Announcement: I'm Hiring!

As I continue to share Flutter content on social media and my website, I'm now looking to hire my first Flutter content creator.

This hire will help me brainstorm, create, and share more Flutter tips and tricks on Twitter and LinkedIn.

For more details and how to apply, read the job description:

Until next time

Thanks so much for reading this latest newsletter edition.

If you found this helpful, you can share it on Twitter.

And stay tuned for the next one!

Happy coding!

Want More?

Invest in yourself with my high-quality Flutter courses.

Flutter In Production

Flutter In Production

Learn about flavors, environments, error monitoring, analytics, release management, CI/CD, and finally ship your Flutter apps to the stores. ๐Ÿš€

Flutter Foundations Course

Flutter Foundations Course

Learn about State Management, App Architecture, Navigation, Testing, and much more by building a Flutter eCommerce app on iOS, Android, and web.

Flutter & Firebase Masterclass

Flutter & Firebase Masterclass

Learn about Firebase Auth, Cloud Firestore, Cloud Functions, Stripe payments, and much more by building a full-stack eCommerce app with Flutter & Firebase.

The Complete Dart Developer Guide

The Complete Dart Developer Guide

Learn Dart Programming in depth. Includes: basic to advanced topics, exercises, and projects. Last updated to Dart 2.15.

Flutter Animations Masterclass

Flutter Animations Masterclass

Master Flutter animations and build a completely custom habit tracking application.