A quote by the very company that developed flutter, sums it all up...
"Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.” - Google
The Keywords to understand in the above quote are
UI Toolkit
A UI kit generally contains a bunch of graphic files including UI components (buttons, check boxes, progress bars, etc.) for the purpose of user interface design. This prevents the wasting of time figuring out how to implement components, but create wonderful designs.
Native mobile application
Native mobile application, are usually applications that has been written using the native development language and tools specific to that platform. A native iOS application written in Swift or Objective-C and compiled through Xcode, a native Android application written in Kotlin or Java and compiled using Android Studio.
Since these applications are developed using the platform’s default solutions, developers have full and easier access to the device’s capabilities; like all the device’s sensors, the user’s address book. Native applications are also more performant than web or hybrid applications.
However, any application written for iOS using Swift cannot run on Android, and vice versa, thus forcing you to develop specifically for each platform.
These disadvantages are not the issue in flutter. To know why, see Flutter Architecture.
Codebase
The source code. By single codebase it means that you can create web, mobile and desktop applications by writing code only for one and allow access to all through this. The Programming language flutter uses is Dart.
Why Flutter?
For a start, have a look at companies that use flutter
Flutter provides the advantage of native applications providing performance, greater control over the hardware as well as ease of use for developers.
Flutter Architecture
Best to get the overview from flutter itself to know about it and it's uses.
Here is the architecture in short.
Here is a video explaining the same.
What does flutter consist of?
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.
Installation
Here is how you can install Flutter. Do not install Android Studio right now, this week you do not require it. Read until writing your first flutter app.
To use flutter consistently between different terminal sessions, go through this
Basics
Dart
To develop with Flutter, you will use a programming language called Dart. You can download dart sdk or use the online DartPad. But as we are developing flutter apps, we do not need Dart sdk.
Dart focuses on front-end development, and you can use it to create mobile and web applications.
Let's learn a little about it. (Use below given online IDE)
Create your first app
The best way to learn flutter is to create an app on your own. Dont worry, its easy!
If you are more of a watch-and-learn person, here's a full video to help you get started. Just skip the initial installation parts:
Or if you want to read and learn, you can visit these:
For reference, keep this handy
Basic Understanding
What is Future in flutter?
You must have encountered keywords like async, await and Future till now. These are very important blocks that one should comprehend.
Get this concept with this video created by Google developers themselves
Optional topics
Local database
So far so good. Let's learn a new concept - how to store the information in mobile memory?
Let's create a simple dynamic to-do list app
Or if you would like to work it out with a video -
Task
All the details of the task are provided in the README.md file.
As you are aware, you need to fork from and the repository, clone the forked repository, complete the task, commit and push your changes and finally open the pull request back here.