Flutter: Introduction

Flutter is a mobile app SDK which allows you to build high-performance mobile applications for iOS and Android using a single codebase. Unlike other cross-platform frameworks, flutter helps you develop apps that feel like real native apps. The apps developed with Flutter will have differences in scrolling behavior, typography, icons and much more.

Flutter was created by Google.

It is open source.

For developers: Flutter speeds up development, reduces the cost and complexity of iOS and Android applications. It can be easily adopted by programmers familiar with object-oriented concepts.

For designers: It can be used as a high-fidelity and rapid prototyping tool.

Apart from having a single codebase, flutter has the below advantages:

  1. Less code with a modern and expressive programming language called Dart.
  2. Allows you to prototype and iterate easily.
  3. Helps you create beautiful and highly customized user experiences. For iOS and Android, you can realize the Cupertino widgets and the Material Design with a single codebase.
  4. Flutter can work with existing code as well.

You don’t need any prior mobile development experience to get started with Flutter. However, it would surely help if you are a seasoned Android/iOS developer. ReactNative and Xamarin.Forms apps can also start using Flutter and leverage its portability across Android and iOS.

How is Flutter unique?

Flutter and Dart

Flutter doesn’t use WebView or OEM-shipped widgets to draw the application’s UI. It uses its own high-performance 2D rendering engine (Skia) to draw the widgets. Also, it has a very thin layer of C/C++ code. Most of the framework’s implementation is done in Dart

Dart is a modern object-oriented language which is fast and portable, even on web browsers (it transpiles to JavaScript for web apps). If you already know C++, C# or Java, you can easily get started with Dart and Flutter.

Flutter Layers

Under the hood

Platform channels

Flutter doesn’t use WebViews or widgets shipped with the iOS and the Android SDKs. Dart is compiled ahead of time (AOT) for different platforms. Thus, there is no need for a bridge between your app and the platform, which is typical of ReactNative and other cross-platform frameworks. This results in faster application startups.

Flutter also provides its own widgets, not an extension of the OEM widgets, but completely new widgets, developed from scratch. However, they look and function as native widgets. Flutter widgets are easily extendable and customisable.

Flutter’s engine hosts the 2D rendering engine, Dart and its VM and hosts them in a shell. This shell is different for different platforms. The Embedder API allows Flutter’s engine to be used as a library. The shells implement platform-specific code for communicating with IMEs and the system’s application lifecycle events.

The Dart VM packages the Dart core libraries and dart:ui which provides low-level access to the 2D rendering engine. The shells can also communicate directly with the Dart code through Platform channels, bypassing the engine.

Flutter components