What is Flutter? Flutter is a free and open-source mobile UI framework created by Google and released in May 2017. In a few words, it allows you to create a native mobile application with only one codebase. This means that you can use one programming language and one codebase to create two different apps (for iOS and Android).

Flutter consists of two important parts:

An SDK (Software Development Kit): A collection of tools that are going to help you develop your applications. This includes tools to compile your code into native machine code (code for iOS and Android). A Framework (UI Library based on widgets): A collection of reusable UI elements (buttons, text inputs, sliders, and so on) that you can personalize for your own needs. To develop with Flutter, you will use a programming language called Dart. The language was created by Google in October 2011, but it has improved a lot over these past years.

Dart focuses on front-end development, and you can use it to create mobile and web applications.

If you know a bit of programming, Dart is a typed object programming language. You can compare Dart's syntax to JavaScript.

Why you should learn Flutter?

I selected some of the reasons why I like Flutter and why I want to use it next year. I will give you details and my feedback below.

Why you should learn Flutter?

I selected some of the reasons why I like Flutter and why I want to use it next year. I will give you details and my feedback below.

https://www.freecodecamp.org/news/content/images/2020/07/companies-using-flutter.png

Companies using Flutter

Simple to learn and use

Flutter is a modern framework, and you can feel it! It’s way simpler to create mobile applications with it. If you have used Java, Swift, or React Native, you'll notice how Flutter is different.

I personally never liked mobile application development before I started using Flutter.

What I love about Flutter is that you can create a real native application without a bunch of code.

Quick compilation: maximum productivity

Thanks to Flutter, you can change your code and see the results in real-time. It’s called Hot-Reload. It only takes a short amount of time after you save to update the application itself.

Significant modifications force you to reload the app. But if you do work like design, for example, and change the size of an element, it’s in real-time!

Ideal for startup MVPs

If you want to show your product to investors as soon as possible, Flutter is a good choice.

Here are my top 4 reasons to use it for your MVP:

https://www.freecodecamp.org/news/content/images/2020/07/flutter-app-example.gif

Flutter App Example - ToDo List

Good documentation

It’s important for new technology to have good documentation. But it’s not always the case that it has it!

You can learn a lot from Flutter's documentation, and everything is very detailed with easy examples for basic use cases. Each time I’ve had a problem with one of my widgets in my code, I have been able to check the documentation and the answer was there.

https://www.freecodecamp.org/news/content/images/2020/07/flutter-documentation.png

A growing community

Flutter has a robust community, and it’s only the beginning!

As you may know, I love to share my knowledge and useful content on programming on my website. I need to know I’m working on a technology full of potential with a lot of backers.

When I started using Flutter, the first thing I did was search for communities, and to my surprise… there are a considerable number of places to exchange info on Flutter.

I will give you some examples of places I love to check daily. Feel free to send me a message on Twitter with your suggestions.

From where should I start learning Flutter?

Maybe the same question also circles in your mind, and here I’ll try my best to provide you a path for mastering Flutter.

Pre-requisites:

You need to have some background knowledge to get a better start with Flutter. This blog post covers this topic very well.

Do I need to install Flutter to learn it?

No, you don’t need to because Dart Pad is there for you to practice and run your code. Dart Pad is an online tool where you can pretty well build a complete App without installing a single piece of Flutter Development Tool locally.

But it’s always better to have a local tool for flutter development. So, to install Flutter locally, here are a complete set of installation steps you need to follow.

Dart Language Tour:

My very first suggestion is, Always start with basics. Before diving deep, it’s recommended to have a little know-how of Dart, the language behind the Flutter Framework.

Flutter resources for developers

Below, you will find general resources that will help you get to know Flutter better, regardless of how much you already know. They include the official Flutter docs, YouTube videos, expert articles as well as source aggregators.

Official documentation – the essential Flutter resource

The official Flutter documentation is the best place for beginners and the best introduction to Flutter, your go-to site when in doubt. You will find everything you need when starting to learn Flutter – articles on how to set up the environment, Widgets catalogue and API reference. There are also many tutorials and samples that show new developers how to use Flutter API and build beautiful apps in record-breaking time.

The Boring Flutter Development Show

This is a YouTube show from Google developers where they try to implement different things in an hour as regular mortals do. You can expect all the problems we face while developing apps. If you ever asked questions like “Why doesn’t it compile?”, “Why is it not working?” then you will find it all while watching this show. I recommend this online show for anyone that wants to see real Googlers struggle and learn from their mistakes. A fun way to learn Flutter.

Flutter in Focus

It’s a YouTube series that will provide you with essential knowledge about different topics around Flutter in the convenient form of 10-minute videos. You will find videos on Dart features, Flutter widgets, or integrations with different tools. A good Flutter tutorial for beginner devs.

FlutterDev subreddit

The Flutter Reddit page is a place where you can find many highly informative posts on Flutter. A great stream of valuable information where you can find learning resources about Flutter in one place.

Flutter Awesome

This is an aggregator of many articles and videos about all-things Flutter. All resources are categorized by topics related to Flutter.

For example, if you’re looking for information about Forms, you have to use the topmost menu and go to Input -> Forms. Tada! You’re now looking at all resources about Forms on Flutter Awesome.

https://tsh.io/wp-content/uploads/2020/06/flutter-awesome-forms-resources_.png

With Flutter Awesome you can learn about forms and many other aspects of the technology

Widget of the week

Another YouTube series from Google devs to learn about Flutter widgets. It’s a playlist with short one minute Flutter course videos, each concerning one widget available in the Flutter SDK. I highly recommend you give it a try as it has many great videos to help you discover and learn about Flutter widgets.

It’s all widgets

This is a catalogue of existing apps or projects in progress. You can find different applications built by developers in the Flutter community and see what you can achieve with Flutter. I’m amazed by the number and diversity of apps that are created with Flutter.

FlutterX

A valuable site that provides aggregated resources on Flutter. A great page to search for tutorials, articles, and such about Flutter. Check it out, it’s a simple yet powerful resource.

Architecture & state management Flutter resources

When you get a little bit more familiar with Flutter and widgets, you’ll want to find information about how to build applications that can scale up and remain at very least maintainable. That will lead you to a question about what architecture you should use. With that challenge in mind, check out the resources below.

Flutter Architecture Samples

This is a GitHub repository about different architectures applied to the Flutter ToDo app. You will find anything from old MVC, BloC, mobx, or Redux examples. And if you’re already familiar with any given app architecture, you can find a sample of it in this repository. You should really try it. It’s a very good learning resource on how to build Flutter apps in different architectures.

BloC

BloC is currently the most popular state management library. You’re bound to come across it when you google for state management in Flutter. It is well-documented and you will find a lot of articles online (e.g. Medium) on how to use it. It was first introduced at Google IO. Here’s a video where you can check that out:

The pattern is based on sinks of events and stream of states. Events are mapped into states and emitted on the stream. You can read more about this pattern here.

Official documentation for BloC and Flutter BloC libraries

Official Github repository

Provider

This library is based on InheritedWidget. This allows you to ask for dependencies in the widget tree. The simplest explanation is that you can ask the Provider widget somewhere above your widget to return some data to you. This library is well-known in the Flutter community.

Get It

Get It is a service locator. It’s not exactly a dependency injection framework but it will help you to get your dependencies anywhere in the app. Use this if you don’t want your app to be tightly coupled with the Flutter framework.