But What is Flutter ?

Flutter is an open source cross-platform framework by Google allowing us to build high performant applications for multiple platforms with a single codebase. As of now, the Flutter framework can target Android, iOS, Linux, macOS, Windows, Google Fuchsia, and the web from a single codebase.

Overview of Flutter ✨

Flutter is a UI first framework, you tend to build the UI first and then add logic and functionality to it.

Flutter apps are close to natively built apps in terms of appearance as well as performance. Although achieving native performance with a cross-platform framework is not practical, Flutter apps are extremely fast and provide near native performance.

What makes Flutter apps so Fast ? 🚀

Flutter code compiles to ARM or Intel machine code as well as JavaScript, for fast performance on any device.

Flutter architecture: docs.flutter.dev/resources/architectural-overview

The Developer view of Flutter 🤓

The Dart programming language is used to write Flutter apps. Dart was explicitly built for Flutter. Dart shares a lot of common features from Java & C++. I personally feel Java devs can get used to Dart pretty fast.

Flutter uses the term Widget for it's components, which is basically a class with a bunch of attributes. Flutter provides the Material package for Android and Cupertino package for iOS to provide native-like experience to the end user. Flutter provides a ton (literally a ton) of frequently used widgets speeding up the development process.

The thing I like most about Flutter is you don't need to memorize any of the widgets. These widgets are written in a way, which closely resembles the common English language.

All the major IDE(s) provide great support for Flutter development, although my personal choice is VS Code. There are huge number of extensions available for Flutter in the VS Code marketplace easing out the development process in everyway possible.

Flutter apps are by default beautiful, adding very less pressure on you if you are decent with your design skills. It just takes you 2 to 3 small apps to get used to the Framework and start building beautiful apps without worrying about the design. (Having a design of what you are building is always a good choice. Figma software is preferable)

Package Manager 💰

pub.dev The official package repository for Dart and Flutter apps.

It's an ocean of packages and plugins for your apps. You name it, you'll find a perfect package for your use case. No more reinventing the wheel with Flutter

Prerequisites 🏋️

  • A basic understanding of OOPS concepts (Class, Inheritance and Interfaces etc.)
  • The Dart Programming language. (Resources provided below)
  • A basic understanding of state management is preferrable. (If your app deals with state)

Yeah, the above pre-reqs are good enough to start building your next beautiful app with Flutter.

Pros 🥇

  • Flutter apps are extremely fast.
  • Apps are beautiful by default.
  • Fast development.
  • The best documentation for any tech I found so far. (Kudos team Flutter)
  • Humongous community.
  • Flutter can handle 3D graphics/animation with ease.
  • All major SAAS and BAAS provide dedicated SDKs for Flutter. (Dedicated article about SAAS and BAAS in future 😁)

Cons 😅

I would sound like a hypocrite if I did not include the cons of Flutter.

  • A decently steep learning curve.
  • Flutter apps are a bit heavy. (But have been improved over the versions).
  • You need to install Android Studio to have access to Android emulators. You should own a Mac (iOS) to have access to iOS simulators.

Alternatives for Flutter 😏

  • React Native
  • Ionic

Flow 🏃‍♂️

Beginner:

Flutter with stock Stateful widget for state management.

Medium:

Flutter + Database + External State Management packages.

Advanced:

Flutter + Database + State Management packages + MVC pattern.

My Ultimate Flutter Stack ❤️‍🔥

Flutter + Firebase + GetX + MVC pattern = 🔥

(Firebase Backend, GetX state management, MVC pattern for seperating business and logic part of the app)

Alternatives:

State management: Riverpod, BLoC, Redux etc.

Patterns: BLoC .

You now have good amount of understanding about Flutter.

Resources 🏛️

Dart:

YouTube: Dart for Flutter

dart.dev/guides

Flutter:

docs.flutter.dev/

docs.flutter.dev/reference/tutorials

docs.flutter.dev/cookbook

YouTube: Flutter basics Playlist

Until next time 👋