Flutter 3.13 is here!
This release introduces new widgets (2D scrolling, yay!) and brings improvements on many different fronts (performance, accessibility, Material support, improved iOS widgets, and more!).
Alongside it, Dart 3.1 is available too, and in this newsletter, I’ll give you an overview of all the highlights.
But there’s more.
A few weeks ago, the FlutterCon speaker videos were published. Having attended the conference back in July, I can assure you that this video archive is a goldmine, and below you’ll find some my favourite talks. ❤️
Finally, I’ll also share some of the latest articles from the community. 🙂
Ready? Let's go!
In a nutshell, here are the top highlights from the new release:
- Impeller performance improvements on iOS (though some latency issues still persist - see issues #110431 and #113494)
- More customization and new capabilities in the Material Framework, along with platform-adaptive dialogs and improved date pickers on iOS
- A new
AppLifeCycleListenerclass (with improved APIs over the
- Two-dimensional scrolling APIs and packages to unlock new interactions such as diagonal scrolling (check out this cool demo!)
- New slivers for composing unique scrolling effects
- New DevTools features
For all the details, read the official blog post:
With the release of version 3.0, Dart has truly become a multi-paradigm language that allows you to write code with an object-oriented style (using class hierarchies) or functional style (using types and pattern matching).
As a minor release, Dart 3.1 doesn’t introduce any new language features, and it won’t affect the way you write Dart code.
As a result, the official announcement is more of a retrospective about how the new language features can help you model your data and improve the way you write and structure your Dart code.
If you want to better understand the difference between the object-oriented and functional approaches when writing code, this is a great read:
If you’re coming from the iOS world and you want to port your apps to Android with a single codebase, Flutter is the ideal choice.
To help with this, the Flutter team has published a new in-depth video explaining how Flutter works on iOS:
Additionally, these useful resources are available in the official documentation:
- Learning Dart as a Swift developer
- Flutter for SwiftUI Developers
- Objective-C and Swift interop using package:ffigen
So it’s great to see that all the Flutter video recordings have been published:
Admittedly, the official website is a bit clunky to navigate. But fear not, for I have listed all the talks and resources on this (updated) repo:
With so many great talks, I really struggled to pick my favourites.
So here’s a shortlist of the ones I found most engaging, creative, and informative. 👇
I know very few people who can kickstart industry-leading products such as Flutter, and have the long term vision to see them thrive over many years.
One of these people is Eric Seidel. And it was great to hear his take on where Flutter might go over the next 10 years, what expectations the next 10M Flutter developers will have, and how to meet those expectations.
In the talk, Eric also gave a demo of Shorebird, a new tool that enables code push for Flutter apps:
This was a highly entertaining talk by Raouf Raniche about how text rendering works, and how even big companies like Spotify mess it up in their apps.
Covered topics include:
- How various font metrics affect the text line height
- How character positioning and selection works on LTR, RTL, top-to-bottom layouts
- How text rendering works in Flutter, known gotchas, and things you should consider to “get it right”
For all the details, here’s the full talk:
And in his talk, he talks about the challenges his team encountered when dealing with network connectivity as the app grew in scale and how they overcame them by making the app offline-first.
The biggest takeaway is that offline is not an error. Rather, it is one possible (and rather common) application state that should not be left as an afterthought.
For all the details, watch this:
What made the talk so interesting is that Pooja did not focus on the UI - but rather showed how to use FlutterFlow to handle business logic and Firebase data access, including:
- How to connect a
ListViewto a Firebase Backend Query
- How to handle Firebase Authentication and chain multiple actions using visual workflows
- How to render UI based on complex conditions that depend on the application state
She did all this without writing any code. And to top it off, she showed how to use the finished product by running a live quiz with the audience. 🤯
Check it out:
During FlutterCon, the LeanCode guys delivered not one but two very interesting talks.
The second one was about their experience in building a large-scale app with a team of 25 Flutter developers.
Without a doubt, building large apps with large teams presents some unique challenges, including:
- Deciding who owns the code
- How to structure the code (project structure, packages and features, etc.)
- What tools to use to make life easier (Melos, Patrol, StoryBook)
- How to establish a design system that could be used by multiple teams (and how to ensure the app conforms to the designs using golden tests)
Here’s the full talk:
So I particularly enjoyed this talk where Renan Araujo showed:
- What shaders are and how they work
- How to add them to a Flutter application
- A few examples (basic interpolation, fancy gradients using meshes and animations, image textures, UI sampling)
Definitely worth a watch if you want to know what Flutter is capable of:
If you want to migrate your Flutter app to Material 3 but don’t know how to, this talk by Taha Tesser covers all the things you need to know, including:
userMaterial3flag and what happens when you enable it
- Ways to update the color scheme and typography
- Elevation and how it affects the look of your widgets
- Switching to the new Material 3 widgets
Here are all the details:
When it comes to Flutter animations, Marcin Szałek is one of the most knowledgeable devs out there.
And in this talk, he shows how he added advanced animations to a real-life production app that allows users to send money to friends, by covering:
- How to build a simple micro-interaction example and gradually add more complex effects, ensuring the end result can be reused in multiple places.
- How to implement an animated splash screen, which can be used to delight users when they first install the app.
If you want to learn how to make your apps beautiful with the built-in Flutter animation APIs, don’t miss this:
When Remi Rousselet comes on stage, there is always something amazing to learn.
And in this talk, he delivered a live coding demo, showing how (relatively) easy it is how to write custom lint rules and fixes for your Dart projects.
As part of this, you will learn:
- How to create custom lint rules
- How to report errors that will appear in the code editor (based on some rules)
- How to add quick fix options and the logic for applying them
Here’s the full talk:
With so many amazing talks, it was hard to make a shortlist. Here are a few more of my favourites:
- Flutter Tips and Tricks by Simon Lightfoot
- Exploring Records and Patterns by Pascal Welsh
- Stop Treating Accessibility as an Afterthought: Concrete Steps to Build Inclusive Apps by Manuela Sakura Rommel
- Understanding Flutter's handling of Gestures by Guillaume Diallo
- Control your Flutter application on the fly with Firebase Remote Config by Mangirdas Kazlauskas
And once again, you can find the entire list here:
Aside from the Flutter 3.13 announcement and all the FlutterCon talks, I also want to share these useful articles from the community. 👇
In this new article, Mangirdas Kazlauskas takes us through the new
AppLifeCycleListener class introduced in Flutter 3.13, showing how it’s now possible to listen to transitions between states, making it easier to run some code only for the transitions you are interested in.
Additionally, it shows how we can use the
onExitRequested callback to ask if the application should exit in cases where the exit is cancelable:
As part of her new newsletter, Daria Orlova published a great article about:
- The static code analysis tools her team uses to follow established code practices and have more confidence in the quality of the codebase.
- Some useful lint rules you can enable in your projects
- An example of how she implemented a custom lint rule with the custom_lint package (no doubt, this was inspired by Remi’s talk at FlutterCon 🙂)
Overall, I quite like her humorous and informal writing style, and you can read the full article here:
For most of the last month, I’ve been on holiday with my family, and I haven't published new articles as a result.
But now I’m back in business and can’t wait to share new content (and some new, upcoming projects) with you all! 💪
So stay tuned for updates and happy coding!