Widget Tricks Newsletter #29
Flutter + Supabase + Metabase. Who is hiring. All about GlobalKey. Records in Dart. How service locator works. The runtime that makes Dart tick and much more.
📝Post of the month:
💡Flutter Tips:
💼 Job To Apply:
Software Engineer (Flutter Mobile Dev) at OPENLANE (Remote)
We are seeking to bring on talented software developers interested in remote work opportunities. We are an agile development team delivering high quality products on the Web, iOS, and Android with backend microservices orchestrated by Kubernetes on the AWS cloud.
Are you an innovative and passionate Software Engineer who enjoys building next generation front end user experience and interfaces? Do you enjoy the highly collaborative nature of working in an agile/scrum environment?
Salary Range : $80,000.00 - $110,000.00 / year
Senior Mobile Software Engineer at RXNT (Remote)
We are currently seeking to fill several Senior Engineer positions across all four of our engineering teams. Learn more about our engineering teams here.
As a member of RXNT’s mobile application team, you’ll work with the product and Engineering team to add high value features to the existing enterprise grade mobile application.
Salary Range : $115,000 - $150,000 / year
✍🏻 Articles to read:
All I Know about GlobalKey by Tsuyoshi Chujo
I've used GlobalKey
in places where I wanted to optimize the rebuilding of certain expensive widgets. Apart from that I always use it for navigation with go_router
to access the navigator from anywhere.
This article goes into a deep dive on how global keys work under the hood and how they reuse the widget when it is needed.
Records as simple data structures by Dart.dev
Recently, the Flutter team added a section on how we can use "Records as Simple Data Structures" using type aliases, which allows us to easily reference complex records and also enables us to migrate Records to classes easily.
I discussed this extensively in my talk "A Pragmatic Approach to Using Records and Pattern Matching" last year.
One to find them all: How to use Service Locators with Flutter by Thomas Burkhart
Whenever I want to write tests for legacy code, the first thing I do is look for a service locator to replace the dependencies, and get_it is my preferred choice when it comes to Dart. It is easy to set up and test, and also simple to use. In my opinion, it is a really good choice for dependency management.
📺 Videos to Watch:
The Runtime That Makes Dart Tick - Slava Egorov
A Warning: This is an advanced Dart talk at the compiler level. So it's hard to know everything that's going on. But I watched this to get some basic understanding of how Dart works under the hood.
Supabase Behind the Scenes
Recently, I've started using Supabase for my side projects. This quick 7-minute video basically covers everything that Supabase offers. I am really liking Supabase for a few reasons:
1. Postgres, which allows defining relationships among tables.
2. Authorization out-of-the-box.
3. Intuitive RLS UI. I don't have to worry about access permissions anymore.
4. Using functions for complex queries.
5. Using Postgres with Metabase (it's a Postgres feature and not specific to Supabase).
Metabase Tutorial: Everything You Need to Know in Under 40min
This is another tool that I liked recently. Metabase is a tool to generate insights from data using your database table using different charts. All you have to do is connect your database (in my case, I use Supabase Postgres) and start building charts from those tables.
I like the following features:
- The UI starts with a business question you are trying to build a chart for.
- Multiple in-built summarizer and chart options
- Build your own dashboard using those charts
- Custom columns to derive data from multiple columns in the same table
- Share the dashboard with the team on a scheduled basis
Note: It's open-source and free to use locally (using Docker). For the cloud version, you need to pay for it. Since it's my side project, running it locally works for me.
📦 Code from Packages
Flutter Launcher Icons
A command-line tool which simplifies the task of updating your Flutter app's launcher icon. Fully flexible, allowing you to choose what platform you wish to update the launcher icon for and if you want, the option to keep your old launcher icon in case you want to revert back sometime in the future.
😂Fun and Memes
👋🏻 That’s it, Folks
If you are a Flutter developer who wants to advance your Flutter skills, then I am currently running live classes called effectiveflutterdev.com. So if you are interested, then apply now
Also, If you enjoyed this post, then would you be able to do me a quick favor and share my latest blog post with your friends and colleagues? I'd really appreciate it and I think it could be valuable to them.