Khalid Al-Mohammed
4 min readJul 24, 2020

Is flutter worth learning?

The Flutter mobile SDK powers incredibly fast 🚀 and stunningly beautiful apps. Developers love it — Dart is very easy to learn, and reactive UI makes programming very straightforward.

Flutter removes a lot of “how do I build…?” questions, replacing them with “what will I build…?”. It abstracts away a lot of complexity that comes with developing native Android & iOS apps. You design the UI, and then dive straight into coding.

Think of it as a faster, less-mature React Native.

Familiarity

I’m going to be honest, I haven’t done much native Android & iOS development, but I’ve put the hours into React Native.

For some reason, React Native rubbed me the wrong way. I don’t know if it was Javascript, complex build procedures or weak typing, but I didn’t enjoy it. I loved the idea of UI as a pure function of state, however, and have been eager to apply it ever since.

The Flutter framework, and its widgets (Equivalent to components) have a very similar architecture to React Native. Each widget holds state, which can be passed down to children. When this becomes unwieldy, you can move to redux (Which is available in Dart).

If you know React, you’ll hit the ground sprinting with Flutter.

Packages, Plugins & Prayers 🙏

To be frank, the Flutter plugin scene is very lacking. If a plugin exists, it usually has very little support. This is an unfortunate side-effect of using Dart, a pretty niche language.

If you want to use third-party services, you’ll have to write your own API abstraction layer, because you won’t find it online. (Firebase is an exception, which I’ll discuss later). Be prepared to dive through source code & API documentation to build features that other languages offer pro-bono.

Now, Firebase is a special exception. The Google team supports some pretty decent libraries for authentication, the real-time database, and Firestore. They’re not perfect, but will offer enough functionality to create a successful, client-facing app. For complex use-cases, however, you’ll be left yearning for features offered by the Android & iOS libraries.

Interop with native libraries

This is really cool! If you have a Java or Obj-C library you want to use, you can use it in Flutter! Through Platform Channels, you can call native methods directly from Dart code.

I haven’t used this too often, so I won’t discuss it further. There are many examples in the Flutter plugins repo, but be prepared to read through the source-code J

The developer team & community 👪

Flutter is a beta framework, and not very close to being fully finished. In a few years, most of my pain-points will have disappeared from the efforts of the fantastic developer team.

Big issues are taken very seriously by their large team of developers. I once submitted a PR, and they fixed & merged it within a day. That’s crazy! The developers & community are very active on Github, StackOverflow & the IRC channel.

Should I use it in a production app?

Like all things in life, it depends.

For small apps with mostly-standard functionality, go for it! You’ll enjoy building the app, and it’ll look beautiful.

If you can use Firebase as your database, that’s even better. You’ll have good tooling, and it’s very easy to get off the ground.

For complex & serious apps, you better get comfortable with reading source-code, lodging GitHub issues, communicating via IRC and posting to StackOverflow.

If you need a more scalable, cheap backend (E.g. DigitalOcean, AWS), then don’t use Flutter. It’s sad, but the third-party support just isn’t there yet. Maybe you’ll be the one to build it

Rapid prototyping & MVPs 🔧

Flutter & Firebase will launch you from the drawing board and onto the app store. You’ll have a great-looking, functional app in no time. For a startup, I think this is the best course of action. I’d recommend building the MVP quickly & cheaply (using Flutter), and then shifting to React Native/Native apps once you’ve validated your business plan and can afford to invest into more serious development.

To Recap:

Pros

A pleasure to use

Incredibly speedy development time (i.e. great developer velocity)

Compiles to native code, so very fast

Hot Reload (See UI changes within ~1 second)

One codebase for both Android & iOS

Strongly-typed language (Dart)

Cons

Still in Beta. Some APIs are inconsistent or missing.

Third-party plugins are very lacking.

Uses Dart, which is pretty niche (Contributes to lack of tooling)

Final app size will be a lot larger than native apps (~6mb minimum)

Looking for Flutter developers? Contact us and let’s create something great together!

My email: info@shwbooking.@com

Also if you want tips, tricks, tutorials, and things about flutter visit my website: selfcoder.shwbooking.com