Believe it or not, 5 years have passed since Flutter 1.0 was released.
For me, it’s been a privilege to grow alongside the Flutter community since those early days, and I hope this journey will continue for many years ahead!
And in this newsletter, I've got lots to share with you! We'll dive into the newest Flutter videos and articles, explore how the Flutter Gemini AI demo came to life, catch up on the latest Flutter & Dart backend news, and take a look at Signals.dart – a fresh library for handling reactive state.
So let’s dive in!
Flutter Videos
The Flutter YouTube channel continues to be a goldmine of useful resources. This month, two videos got my attention.
📹 OverlayPortal (Widget of the Week)
Need a widget that's connected to its parent but appears visually separate, like a tooltip or menu? Meet OverlayPortal, your new go-to widget.
The latest video breaks it all down for you. It shows how to toggle the overlay on and off, how to pop a child widget into the overlay, and how to specify a custom position.
📹 Release an iOS app with Flutter in 7 steps
Ready to launch your Flutter app on the iOS App Store? There's a bunch to do, including:
- Register your Bundle ID
- Create a record in App Store connect
- Tweak all the necessary Xcode settings (like code signing and deployment version)
- Adding your app's icon
- Updating the build version
- Create a build archive, upload it to App Store Connect, distribute it with TestFlight, and submit the app for review
So don’t miss this detailed video walkthrough, which covers all the details:
Flutter & Gemini AI News
Advancements in the AI world continue at breakneck speed, and this month Google shared a demo of Gemini, a multimodal LLM that was announced earlier this year at Google I/O. This hands-on video sparked a lot of buzz, though if I’m honest, I enjoyed this take by Fireship much more:
As it turns out, the original video was highly edited, and we’ll know what Gemini Ultra can really do once it becomes available to the public (though you can already try Gemini Pro for free).
But how is this relevant for us, Flutter developers?
As this video shows, the Gemini AI demo was built with Flutter, making it possible to generate a visually rich, interactive UI on the fly:
What’s more, the demo was built by the VGV team, who shared this blog post:
And if you're itching to dig deeper, they've even shared the Ask Dash Flutter Demo code on GitHub.
Dart & Flutter on the Backend
Good news if you want to build and deploy your Dart & Flutter apps on the cloud!
First up, the Invertase team has rolled out Globe.dev for public preview. This means you can now deploy your apps on a serverless global edge network and get faster response times (bye bye, cold starts!).
Globe offers a Vercel-like experience for developers, and I was able to follow the Getting Started guide and deploy a simple Shelf app in 5 minutes. If you also want to check it out, start here:
What’s more, a new company called Celest has entered the scene, with the intent of building a holistic backend solution for Flutter and Dart developers.
Of course, many other options are also available, including Supabase (whose pub.dev package just hit version 2.0), Appwrite, and Serverpod.
And I can’t wait to see how all these platforms will evolve in 2024.
Articles from the Flutter Community
This month, I want to share these two helpful articles.
📝 Why We Need AsyncValue of Riverpod
If your Flutter app reads some data from the network, how many different states do you need to handle?
At first sight, you may think that loading, completed, and error states are all you need. But what about when you need to refresh data and want to display the old content while it's updating, instead of a loading spinner?
Turns out, there are quite a few edge cases to think about, and the AsyncValue
class from the Riverpod package covers them all with an elegant API. For all the details, read this article:
📝 Platform Channels are Dead! Objective-C/Swift Interop is Here!
Since Dart 2.18, we can call native iOS code directly from Dart using Dart FFI and C as an interoperability layer. And since this approach uses code generation, we no longer need to write native code using platform channels.
This article shows how to set up and use this feature, including generating bindings and dealing with limitations like closed source code and multithreading issues:
Flutter Tools and Packages
Here’s a selection of tools and packages I’m excited to share with you.
🧱 Signals.dart
Have you heard? Signals.dart is a new package by Rody Davis for managing reactive updates in your apps (much like Riverpod does). Inspired by the Preact signals library, it features a simple and flexible API, based on a few basic rules.
The documentation is very well made, explaining all the key concepts and providing examples showing how to use the API. To dive in, check it out:
🧱 Flutter Deck - the power of Flutter, in your presentation
Flutter's versatility shines on various devices and screen sizes, and thanks to the ingenuity of Mangirdas Kazlauskas, we now have Flutter Deck. This tool is perfect for crafting custom slide shows and presentations using Flutter.
You can find the package and an example app available on pub.dev:
And don't miss out on some of Mangirdas's recent talks using the tool:
- Let me introduce you to Flutter
- Control your Flutter application on the fly with Firebase Remove Config
Flutter Deck is not the only tool for creating slides in Flutter. Another one is Slick Slides by Viktor Lidholt (who's also the maker or ServerPod).
🧱 Test Sweets - No-code Test Automation for Flutter
Dane Mackier (a.k.a. FilledStacks) is a long-time Flutter developer and author of the popular Stacked package. After his experience running a Flutter agency, he’s now focusing on creating useful tools for Flutter developers.
One such tool is Test Sweets, which lets you create integration tests using some configurable automation keys, without writing a single line of code.
Test Sweets is currently in early beta and if you want to check it out, you can sign up for a free 30-day trial:
Latest from Code with Andrea
Since the last newsletter, I published a new article about deep links, updated my Animations course to the latest Flutter release, and made one big announcement.
📝 Flutter Deep Linking: The Ultimate Guide
In Flutter, deep links serve as direct pathways to specific app content or features, essential for apps with shareable content. They make it easy for users to jump right into your app from shared links, supporting everything from marketing campaigns to content shortcuts.
This complete guide to deep links covers everything from setting things up on Android and iOS to managing navigation with GoRouter:
⏰ Flutter Animations Course: Now Updated to Flutter 3.16
Back in 2021, I launched my animations course, and while Flutter's animation APIs have stayed pretty consistent, Dart has evolved and many new linter rules have been added. That's why I've updated course to keep it up to date and make it easier to follow (see this changelog for all the details).
And since the course just recently passed 1,000 enrollments, I’m currently offering it with a 33% discount (offer valid until the 24th of December):
🚀 I’m Building a New Course Platform
All my Flutter articles, newsletters, and tips will continue to be free for everyone.
But when it comes to paid content, I want to experiment with new, engaging formats such as codelabs, challenges, exercises, with the goal to delivering a better learning experience for all Flutter developers.
That's why I'm creating a brand-new platform, Code With Andrea Pro, set to debut in Q1 2024.
To learn more and join the waitlist, sign up here:
Until Next Time
2023 is nearly over, and this year, over one million people have visited my site. It is truly a honour to reach and help so many people with my content:
If you've missed any of my past articles and want to catch up, you can find them all here:
Plus, all my Flutter tips (139 and counting!) are neatly compiled for you in this GitHub repo:
I’ll also continue my usual tradition of publishing a yearly retrospective (here’s the 2022 edition), where I reflect on my journey as my content creator. So stay tuned for the 2023 edition.
On a closing note, I wish you good health and hope you’ll be able to spend some time with your loved ones over the Christmas period. 🙂
Happy coding!
Andrea