October 2023: The Riverpod “Global” Myth, Dart Completers, Open-Source Flutter Apps, and Firebase News

October has been a pretty exciting month for Flutter.

In fact, YouTube Create announced that it’s building its mobile app with Flutter. And the new Google Earth UI has been built with Flutter, too (and you can try it out already 🙂).

And in this newsletter, I will share new videos from the Flutter and Firebase teams, along with some interesting resources from the community, and a couple of large open-source apps too.

So let’s dive in!

New Videos and Articles from the Flutter Team

Here’s an overview of the latest resources from the Flutter team!

📹 Dive in to DevTools

The DevTools are a handy suite of tools for debugging and profiling your Flutter app.

If you want to get started with the DevTools, this video offers an excellent high-level overview of all the features:

And if you want to go deeper, don’t miss this series of in-depth articles.

📝 Developing Flutter apps for Large screens

One of the biggest challenges of multi-platform development is creating a high-quality experience from the smallest devices (such as wearables) to the largest ones (such as tablets and beyond).

In particular, developing for large screens poses unique challenges, such as how to retain state when the device rotates or the window size changes, and how to handle keyboard, mouse, and trackpad input.

And this article offers a good overview of how to solve a range of problems that are common when running on large screens:

Firebase News

Firebase is the most popular BaaS for Flutter app development and is constantly being improved.

And with some creativity, Firebase can be used to create some really cool experiences, such as this one. 👇

✨ Collaborative generative art canvas app built with Flutter & Firebase

During the Flutter & Firebase Festival, Roaa Khaddam presented a talk called Real-time Animated Generative Art with Flutter & Firebase.

As part of this, she shared a cool demo that uses Flutter’s CustomPainter and Firestore real-time listeners to create some animated generative art.

The complete source code is on GitHub, along with a video preview of the end result:

🛟 Backup and Restore Data (New Firestore feature)

Until recently, creating backups for your Firestore DB was a complex task that required significant effort to automate.

But after watching the September Release Notes, I was delighted to discover that Firestore scheduled backups are now supported, and this page covers all the details:

🔥 24 hours with AI extensions, security, and more!

Firebase extensions are a great way to add useful functionality to your Firebase backend without writing all the code yourself.

In the past, I used them to add Stripe payments and full-text search to my apps, and it’s interesting to see what other things they can be used for.

So I particularly enjoyed this video, showing how to use Firebase AI extensions to generate video summaries inside a video-sharing app using Cloud Functions:

Articles and Videos from the Flutter Community

Alongside all the official resources, here are a couple of my favourite updates from the community.

📹 The Riverpod "Global" Myth

A month never goes by without people arguing against Riverpod and its use of global variables. 😅

As someone who’s intimately familiar with Riverpod, I usually roll my eyes and move on.

But poor takes can indeed be confusing (or downright misleading) for newcomers. So I was pleased that Randal Schwartz took the time to put this video together and dispel the Riverpod “global” myth:

📝 Introduction to the Completers: A Practical Guide

When writing asynchronous code in Dart, you may come across something known as a Completer, which is a way to produce a Future that can be completed or rejected later.

Completers are very effective in cases where you need full control over your asynchronous logic, and I found them very useful in some of my apps.

If you want to learn more about them, this article by Didier Boelens covers all the details:

📝 What’s new in DCM 1.10.0

If you want your code to follow best practices and clear conventions, adding static code analysis is one of the best investments you can make.

By default, all new Flutter projects are already configured with the flutter_lints package, and the Dart analyzer works in tandem with your IDE to suggest fixes when you violate lint rules in your code.

To take things further, DCM (formerly Dart Code Metrics) introduces additional lints that help you find problems and suggest fixes in your code. And in the latest 1.10.0 release, a bunch of new lints and improvements have been added.

For all the details, read this:

Open Source Flutter Apps

When it comes to open source, there are a ton of example apps built by Flutter enthusiasts who want to share their work.

However, it is rare for fully-fledged applications to be published with complete source code for everyone to see.

One such app is AppFlowy.io, an open-source alternative to Notion that has collected nearly 40K stars on GitHub.

And this month, I’ve discovered two more projects worth sharing. 👇

📱 Cashew - A fully-fledged budget and expense tracker built with Flutter

This budgeting app has gathered a lot of interest on Reddit, and was built by a single developer over the space of two years.

Its features include a polished UI with seamless transitions and animations, a SQL database (the Drift package), cross-platform syncing, notification reminders, and much more.

If you want to try the app or browse the source code, head over to the official website:

📱 GG: The Journey of Building and Marketing an App

Another app I want to share is GG, which was made to discover free game giveaways from popular gaming platforms like Steam.

In addition to sharing the source code on GitHub, the author also published a blog post explaining how he went from idea to published app with 12K users.

I really liked how the author shared the technical aspects of building the app, as well as the strategies he used for marketing and promotion, and the lessons he learned along the way:

Latest from Code with Andrea

Since the last newsletter, I’ve added a complete module about Stripe payments to my Flutter & Firebase course and shared one new article on my site. 👇

📝 What are Webhooks and How to Use Them in Your Flutter Backend

If you ever need to add in-app subscriptions to your Flutter app, or take payments from your users using Stripe you’ll likely need to implement some webhooks in your backend.

But if you’ve never worked with webhooks before, you may find them a bit confusing.

To help with this, I created this guide, and I hope you’ll find it helpful:

One Last Thing

On a closing note, I want to mention that Black Friday takes place on the 24th of November this year.

And just like I’ve done in previous years, I’ll be offering all my courses with a significant discount - so keep an eye on your inbox as the date comes closer.

Happy coding!

Andrea

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.