Flutter Ultimate Guide

Mikołaj Lenart

Feb 13, 2019 • 7 min read

Flutter is mobile application framework which is getting more and more popular. We are glad that we have created strong Flutter team in our company.

In this blog post, we would like to include most of the resources that we were using during forming Flutter team.

Official documentation

Of course, you can find very useful resources about Flutter and Dart on official website.

Let’s start with Dart official website. If you are confused about so much resources on this site, please look at least at language tour. It can give you very quick overview about this language.

Remember that every language has different style guide. Check out official website or look at example here to find convention and some nice tips about creating dart code. Please look also at some sample codes from Google - very often you can find there really good solutions.

Ok, let’s come back to Flutter. On official website you can find everything from installing Flutter and proper editor to creating complex application. In my opinion, the most important part is Widgets catalog - I use it on my everyday Flutter work. You can find there information about every Widget you need.

Also, If you already are mobile developer, please look at migration guide, which can help you easy switch to Flutter:

If you would like to try creating application yourself, please look at codelabs and cookbook - there are many useful tutorials there.

Choosing proper architecture

Ok, If you already have some basic knowledge about Flutter, you can start thing about proper architecture for Flutter apps. There are many possibilities, one of them is to use REDUX architecture. If you are not familiar with it yet, please look at this this description.

If you think that REDUX is not matching your need, please look at this repository. It contains the same application written in some different architectures, Including MVI, MVU and many more, so you can see comparison between them.

If you are more familiar with MVVM or MVP, please look at just mentioned tutorials, which are explaining how to implement them on the Flutter app.

Of course, instead of looking at examples, you can try to implement your favorite architecture yourself. There are two widgets which may help you with implementing it. One of them is Inherited Widget, perfectly explained in this video. Second one is Scoped_Model . On this video you can find examples of architecture base on each of those widgets.

Cupertino app

When you are creating Flutter application, the easiest way is to use Material Design. However, sometimes you need to create application in iOS style. Starting from version 1.0 Flutter gives you few more Widgets, which allows you to easy adopt Cupertino style to your application - you can find them in widget catalog. Also look at this article for better explanation. If you are looking for working example of iOS - style Flutter app, you can find it here. However, sometimes Cupertino Widgets are not working as you may expect. For better explanation, please look at our blogpost about Pixel - Creating a Pixel-Perfect iOS App with Flutter.


Almost for sure, your application is going to make some API calls. There are some useful libraries which can help you handle it. Probably one of the easiest to use is http. You can find complete tutorial how to integrate it with your application in cookbook.

However, using this library can be a bit tricky for more complex requests. In this kind of situation, you can think about using Jaguar library. It is very good complex library written in Dart (which is also useful with many different situations, not only with API calls). If you are Android Developer, you may especially like Jaguar-Retrofit - it is something similar to Retrofit library, but written in Dart (and of course it is working with Flutter).

There is also another complex and very useful library for making requests Dio. It is one of the most popular libraries for Networking in Flutter and has a lot of stars on Github.

Persisting data

If you have already fetch data from internet, it is time to save them somewhere. One of the best places to persist them is database. With Flutter, you can use Sqflite library for managing SQLite database.

You may also would like to save something in your application preferences. For doing it, Shared Preferences plugin may suit your needs. It is using NSUserDefaults on iOS platform and SharedPreferences on Android.

Other useful libraries

There are many other useful stuff which was not mentioned in this blog post. Most of them you can find on awesome-flutter repository. If you would like to be Flutter developer, this site is must have for you - its huge list of useful stuff, and for sure you will find there what you need.

Summary and other resources

As you can see, Flutter is growing very fast and currently there are a lot of additional libraries which can speed up your development process. If you would like to learn more about Flutter please look at those videos from Google I/O, which are perfectly explaining how to build Flutter app:

https://www.youtube.com/watch?v=w2TcYP8qiRI https://www.youtube.com/watch?v=p4yLzYwy_4g https://www.youtube.com/watch?v=hA0hrpR-o8U

Please check out also our codestories to be up to date with the newest articles about Flutter.

Photo by Randall Ruiz on Unsplash

More posts by this author

Mikołaj Lenart

Codestories Newsletter