Become a Flutter developer — Polo’s Starter Pack
Hi all!👋
These days I was thinking of starting to help junior Flutter developers in their first steps to get into this amazing framework, something similar to being a mentor.
I’ve been thinking about what would be the best way to help them and I realize that doing research on flutter resources and sharing with all of you will be a great idea to help and also to make this community bigger.
When I started learning Flutter on my own, I was a bit confused about how to start, what should I learn first, etc., so this article aims to help with different resources to make this path easier for all of you.
Also, sometimes I’ve talked with Flutter beginners and they asked me about courses, articles, and so on when them trying to learn, so I did research and shared with them, but in the end, the situation repeated itself over and over again… so… I asked to myself … It would be a good idea to have a place with all these resources?, and I think that the correct answer is YES!
There are tons of examples, tutorials, and more, so I’ve collected a few of them to share with you. If you know more, you can share it here to help others.
So if you’re reading this, it’s probably because you’re just getting started with the technology or know the basics and want to learn more about it.
This is a quick table of concepts that I think are important to keep in mind.
Flutter.
Dart concepts.
Common Widgets.
Context.
Pub.dev — Packages.
Responsive layout & theme.
State management.
Testing.
Navigation.
HTTP packages to connect with an API.
Flutter + Firebase.
Animations & Custom Painter.
Community.
** This table could change in the future **
Flutter
First of all, I’m going to share with you the official website and also the youtube channel where you are going to find a lot of useful information related to Flutter. In the Youtube channel are different lists of videos that I found interesting ( widget of the week, decoding flutter, the boring show, and so on).
So check it out!🙌
Dart concepts
To learn the main concepts about dart you have a lot of resources like codelabs, courses, articles, and so on.
First I want to share with you a quick video of why Flutter uses Dart as a language.
These are some of the resources about dart that I found interesting.
- Official website
- Dart tutorials from Dart website.
- Codelabs from Google
- Dart course-Flutterly
- Vandad Nahavandipoor — Dart course
- Top 16 Dart Tips and Tricks Every Flutter Developer Should Know — Code with Andrea
- Going deep with Dart and Dart compiler — Majid Hajian
Common Widgets
This is a large topic to talk about it because there are tons of Widgets to learn, for now, I’ll share with you the official website where is a catalog of widgets, another of the Flutter Youtube channel with their list of “Widget of the week” where you are going to find a lot of examples of how to use each widget and also a “Container” challenge that I found interesting if you want to put in practice all the knowledge about the Container widget.
- Flutter catalog
- Widget of the week playlist
- Flutter Container with challenges — Alfonso García Santiago
- Flutter Widget Essentials — RetroPortal Studio
- Flutter Tips & Widgets — Roaa
Context
This is something that every Flutter developer should know because in some cases there are misunderstandings and people uses it without logic and then have a lot of errors and headaches.
Here I’m going to share with you some fantastic resources that talk about context.
- Why Every Flutter Dev Should Care About BuildContext — Nash
- BuildContext | Decoding Flutter — Flutter youtube channel.
- Builder & BuildContext — Everyone should understand this — Johannes Milke
- Why BuildContext is important? — Diegoveloper. (Spanish)
Pub dev & Packages
This is a website to find all kinds of packages that people created and shared with all the flutter devs to help them with their applications.
Also, you can create your own package and upload it there to help other developers.
- Pub dev
- Developing packages & plugins
- Publishing packages
- How to Create Dart Packages for Your Flutter Apps — Code with Andrea
Responsive layout & theme
Flutter could be used in multiple devices and environments (mobile, web, and desktop), and for that reason is super important to handle all the different sizes that you could have. To do that we need to create responsive layouts. You can do it in different ways, using MediaQuery, LayoutBuilder, packages…
- Creating a responsive Flutter app — Flutter website
- How to build a responsive layout in Flutter — Codemagic
- Layout package — Jaime Blasco
- Responsive Layouts for Responsive Apps — Tadas Petra
- Como hacer el Flutterverse responsive — Argel & Diegoveloper (Spanish)
Also, I want to mention the importance of using the theme in a good way. You need to follow some guidelines to have a good theming in your applications.
Here I’m going to share some examples and also for me one of the best packages to manage the theming if you don’t want to do it on your own.
- Use themes to share colors and font styles — Flutter website.
- Theming a Flutter App: Getting Started — Raywenderlich
- Theme your Flutter Apps like a PRO | Flutter UI Design | Dark Mode in Flutter — RetroPortal Studio
- Package FlexColorScheme — Mike Rydstrom
State management.
This is an important thing to have in mind when you are building an application. There are a few packages that could help you to handle all the possible states of your app.
Also, Flutter provides a one way to change the state of your app thanks to the StatefullWidget class and setState method, but this is only recommended to use when your app is small or is something punctual.
Normally to handle the states of the apps the developers use one of the solutions that have in pub dev.
In my case I use Flutter Bloc, here I explain more about how to use it, but you can choose whatever you want depending on your preferences.
I’m going to share with you three of them. Links are from pub.dev if you want more info I highly recommend you visit the official websites for each state management.
Testing
If you want to be a good developer you should learn to test. In Flutter, you can do different types of testing like unit tests, integration tests, and widget tests.
Recently I wrote an article talking about testing for beginners, you can find it here.
These are great examples:
- How to test a Flutter app — Google Codelab
- Testing fundamentals of Flutter course— Very Good Ventures
- Widget Testing | Jorge Coca | Google Developers North America
- Flutter Testing For Beginners — Robert Brunhage
- Testing Flutter Apps — Making Sure Your Code Works (The Boring Flutter Development Show)
- How to Unit Test in Flutter — FilledStacks
- Flutter Testing Guide for Beginners — ResoCoder
Navigation
If you need to change your page navigating to another you are going to need to use navigation. In flutter, you can navigate in different ways, and exists different solutions to do that.
- Navigation basics — Flutter website.
- Navigate to a detail page and pass data — Flutter website.
- Flutter: Push, Pop, Push — Pooja Bhaumik
- Go router package — Official website.
HTTP packages to connect with an API
In most of the applications, you are going to need to connect to an API to get data and show it into your app. To do that in flutter you need the help of one of the HTTP packages. I think that these three are the most used.
Flutter + Firebase
With Flutter, you can use a lot of features that Firebase has nowadays. These are all the things that you can use per device.
Here you are going to find all the documentation.
Also, there are a lot of people doing great tutorials to teach other developers, and of course, the Flutter website has a few codelabs.
These are some of them.
- Firebase — Flutter website
- Getting started with Firebase on Flutter — Firecasts
- Flutter Tutorial. Complete Auth Flow with Firebase.Email/Password. FlutterFire Auth UI — Johannes Milke
- Firebase Realtime Database Tutorial for Flutter — Raywenderlich
- Flutter Analytics using Firebase — FilledStacks
- Flutter Flavors Setup with multiple Firebase Environments using FlutterFire and Very Good CLI — Code with Andrea
- Flutter + Firebase: How we built CrochetApp — Daria Orlova
Animations & Custom Painter
This is an interesting topic to learn in Flutter because animations and custom painters are going to make your apps more beautiful for the users.
You can use the widgets that Flutter provides you to do simples animations or you can create your own. Here you are going to find more information about it.
By the way, there are some examples of tutorials related to animations and custom painter.
- Animations tutorial — Flutter website
- Diegoveloper Youtube channel (Spanish & English)
- Learn Flutter Animations by Example + Free Gallery App on GitHub — Code with Andrea
- Rive website
- Custom shaped AppBar as seen in the “Bunny Search” app — Daria Orlova
- Animation examples — Dominik Roszkowski
- A Deep Dive Into CustomPaint in Flutter — Deven Joshi
- How to draw and animate designs with Flutter CustomPaint Widget — Codemagic
- Flutter Custom Paint. Made Easy with Flutter Shape Maker — Paras Jain
Community
One of the best parts of being a Flutter developer is the community. There are tons of groups created to share, help and connect with other flutter devs. Probably in your country/city, there are one or more Flutter communities and if it's not, maybe it would be a good idea to start a new one, isn’t it?
These communities have a lot of impact on Twitter if you are interested in connecting with more flutter developers I highly recommend you go into Twitter. There you are going to find a lot of online events, Twitter spaces, articles, tips, and so on.
Something interesting nowadays is that all the Thursdays and Fridays are Twitter spaces to talk about different Flutter topics.
- Thrusday: Majid Hajian
- Firday: dArtists — Mangirdas Kazlauskas & Danny
Additionally, if you identify as a female or non-binary and have an interest in the Flutter SDK you have a wonderful community called Flutteristas. I love this community.
Github repo
I’ve created a repository with the purpose of having all these resources and do it more collaboratively. If you know more resources that are interesting you can create a new PR to add it to the file.
I want to thank all the people who did the courses, articles, and examples to help others developers. If you are one of those flutter devs who shared your knowledge with us, thank you so much!
Let’s keep doing this community bigger and bigger!
You can follow me on Twitter.
Thanks for your time!
Follow FLutter Community on Twitter: https://twitter.com/FlutterComm