Today was the long-awaited day the Flutter Vikings Conference finally kicked off. Day 1 of 2 was packed with numerous high-caliber speakers, such as Remi Rousselet (Creator of Provider/Riverpod, Freezed), Craig Labenz (Face of Flutter YouTube) and many other Google Developer Experts.
After being ceremoniously welcomed by the great organizer Majid Hajian with his best Viking impersonation, the day began with tough choices. As different talks were streamed in 3 rooms simultaneously, viewers had to decide between them. This was made easier by the fact that everything was streamed via YouTube and thus rewatchable anytime.
Deep Dive into Theming
I stayed in the “Valhalla” room for the first hour, listening to Mike Rydstrom discuss Flutter's theming and potential pitfalls regarding Material 3. Mike really showcased his full knowledge on the topic, providing helpful pointers, even for more experienced developers.
His package flex_color_scheme is definitely worth a second look and the theme playground he created is of great value to any Flutter developer!
Flutter Architecture Components
Next up was Alessio Salvadorini with his talk about Flutter Architecture Components.
Even though he mentioned that the topic would be a hot take for many, I found myself agreeing with his proposed architecture in many ways. That said, the part where he discussed state management faced technical issues, so it wasn’t streamed - hot takes might have been avoided there...
What stuck with me the most was his quote during the conclusion:
“Your code must be a reflection of your mental model."
If your mental model doesn’t align with the code you produce - especially with the architecture you use - you will run into big troubles.
Sidenote: While the stream was down for a few minutes, I hopped into the “Odin” room and got hooked by Joachim Böhmer’s talk about Flutter Web in action. Definitely something I will rewatch later! (Thanks YouTube!)
Lifecycle Of A Widget
After the lunch break, a familiar face in Craig Labenz greeted us. If you are a Flutter developer, you surely know him from his energetic tutorial videos on the official Flutter YouTube channel. Today, he delved deep into the framework, discussing the lifecycle of a widget. It was extremely interesting to hear his detailed explanation of how Widgets relate to Elements and Render Objects, how scheduling works inside Flutter, and much more.
Flutter at Scale
Simultaneously, people in the “Odin” room enjoyed listening to how Flutter was used to create a large banking app. Two employees from “LeanCode” (yes, just like LeanCoders and LeanForge) shared their experiences during the project, which involved over 25 Flutter developers.
Some key takeaways for large projects were:
- Responsibilities need to be clear. There must be someone (or better, a team) responsible for every part of the code.
- Taking a domain-oriented perspective often helps.
- You need a task runner.
- Strictly enforce the design system.
- Future-proof the system; there will be changes.
Another general suggestion was to use Storybook for Flutter, which I am very much looking forward to trying!
Building an open-source SDK
Gordon Hayes and Deven Joshi discussed their experience as part of the Stream Chat team. This talk was especially interesting for me, as we at LeanForge have already integrated their SDK into one of our apps and even contributed to the open-source project!
The talk was a great mix of technical details, like issues with ListViews they encountered while developing their SDK, and more developer-relations focused topics, like how to engage people in your open-source project and how to market it.
Riverpod 2.0
Ending the day on a high note, Remi Rousselet took the opportunity to showcase new features coming to his highly popular state management library “Riverpod”. He live-coded an app that interacts with pub.dev (package repository for Dart/Flutter) and integrated features like pull-to-refresh and infinite scrolling with automatic fetching. While doing so, he made some great arguments for using Riverpod, demonstrating how smooth the developer experience of the 2.0 version really is.
Even though we use BLoC at LeanForge, it might be time to consider Riverpod, especially for smaller-scale projects!
Aside from the actual content of the app, I admired how gracefully Remi handled live-coding. He definitely prepared quite a few VSCode snippets for that…
That’s it for the first day. If you want more insights into the conference, follow me on Twitter, where I post regular updates about the talks I’m watching. Stay tuned!