Request Early Access
18 May, 2020

Should I Learn Flutter?

Pros and Cons of the Cross-Platform Framework

We’re on record saying Flutter is the future of write-once deploy-everywhere apps, but if you’re still on the fence, this list will help you make an informed decision on whether or not to learn Flutter. Let’s begin by defining what exactly Flutter is.

What is Flutter?

Flutter is a cross-platform framework for building iOS and Android apps. It was introduced by Google in 2017. Flutter’s homepage reads:

quote

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.

Flutter consists of two parts:

  • An SDK (Software Development Kit): A collection of tools 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) you can personalize.

To develop with Flutter, you will use the programming language Dart. The language was also created by Google in 2011. Dart focuses on front-end development and is used to create mobile and web applications. You can dig more into how Flutter works here.

Now that we’re all on the same page, let’s dive into the pros and cons list.

Pros

Community & Support

Despite being relatively young, the Flutter community is incredibly active. Members are always willing to assist with questions or troubleshooting, and there are already meetup groups around the world, a long events list, and excellent documentation.

The bustling community has already made Flutter 532% more popular in 2019 than 2018 and was listed as GitHub’s 2019’s second-fastest-growing open-source projects by contributors. Companies using Flutter include Square, Alibaba, BMW, Capital One, and eBay.

Performance

Flutter uses Dart, an object-oriented, class-based, garbage-collected language with C-style syntax. Dart can compile to either native code or JavaScript. It supports interfaces, mixins, abstract classes, reified generics, and type inference.

Dart allows the application to directly communicate with the native platform instead of passing through a JavaScript bridge, like React Native. This makes Flutter super fast, responsive, and high performing.

The Developer Experience

Setting up can be a pain, but getting Flutter set up on Windows, Mac, and Linux isn’t. Flutter and Dart come bundled together so you have everything you need from the beginning.

You’re also free to choose an integrated development environment (IDE), with extensions for Visual Studio Code and Android Studio. That includes the Dart developer tools that let you dive deep into your code.

Dart combines some of the great features of Java, Swift, and C#, offering sound type system, async/await, extensions, etc. It also uses standardized Android and iOS toolchains to compile, allowing you to access features of native SDKs and to reuse native code.

Hot Reload

Tired of having to reload simulations after modifications? Flutter’s Hot Reload eliminates the need to. Hot Reload refreshes the UI without having to relaunch the app. Real-time updates drastically reduce development time and allow you to quickly iterate. (Bonus: If you work in Supernova — we support Hot Reload so you can iterate both ways instantly.) While Hot Reload is not a unique-to-Flutter feature (React Native also has it), it’s encouraging to know Flutter is actively responding to developer pain points.

Everything is Widgets

Everything in Flutter, all the way down to a text, is a widget. This greatly simplifies application layout and means you’ll have total control over every pixel on a screen to create the functionality and design you desire.

Flutter comes with a powerful set of platform layout and foundation widgets (remember that the word widgets extends to animations, touch feedback effects, and other things that allow you to actually build apps that have the feeling of a native mobile app on both Android and iOS) for both Material Design and Cupertino to assist you with building beautiful UIs while also allowing the flexibility of APIs for 2D, gestures, effects, animation, etc.

Flutter renders all of its graphics using the Skia engine, which is used in Google Chrome, Chrome OS, Android, and other applications. Since all Flutter widgets are rendered using the same Skia engine that offers up to 120 FPS rather than being built as native widgets, the user interface is very smooth and customizable, and the UI is almost guaranteed to look the same on both iOS and Android.

Cons

It’s Still the New Kid

Even though it’s immensely active and growing every day, the Dart and Flutter communities are small compared to those platforms that have been around longer. This might result in having to do a bit of extra research or coming up with your own solutions from time to time.

There are also fewer job openings compared to native and Javascript development, but Flutter job opportunities are increasing in demand.

Application Size

Generally, Flutter always has to bundle some additional stuff into the app binary, so file sizes end up bigger than the same thing written in native — although, in the case of a bigger app, the difference should be unnoticeable.

It’s worth noting that Flutter comes with ‘tree shaking’ compilation to strip away unused code, so if you don’t use Cupertino widgets, for example, they won’t be included in the app binary.

Accessing Native APIs

You might not have access to low-level native features from Dart, which would require writing native code and knowing how the underlying iOS or Android platform works

But generally, you can access native code from Dart code, so theoretically it should be possible to access any native SDK in a flutter app.

Get Started with Flutter

If you’ve made it this far, you might as well give Flutter a go!

Explore examples of apps built with Flutter on the It’s All Widgets website, and dive into Flutter Awesome, a list of the best Flutter libraries and tools as well as tons of examples, application templates, advice, as well as the Awesome Flutter GitHub repo.

Ready to give Flutter a try?

Create your first Flutter app and speed up the process with Supernova.

We can’t wait to see what you build! 🚀

supernova

SIGN UP FOR OUR
NEWSLETTER

Monthly hand-picked discoveries
and stories of thriving in a new world of design.

You might also like...

Show all articles
© Supernova Studio 2020