Why Choose Flutter in 2020?

It’s as good as everyone says, but even better

Kenneth Reilly
Level Up Coding

--

What is Flutter?

Flutter is a great cross-platform framework from Google that can be used to build applications for mobile, desktop, and web platforms. Officially released in December of 2018, it took barely a year to gain more popularity than React Native on both GitHub and Stack Overflow. There is a very good reason for all the hype, which I will try to explain in this article.

Why Another Framework?

One of the first questions people in the software business generally ask me when I tell them about Flutter is “why would someone use this versus React Native or some other SDK?” and the answer is simple — it’s superior in every way possible to anything else available. Generally, people are going to want a little more explanation, and understandably so.

We often can’t see the limitations of our own tools and resources until someone else comes along with something that works much better, and even then our own biases and preconceived notions can make it difficult to let go of the “old way” and embrace something more powerful and flexible. Software is no different. For example, someone with only PHP experience will argue why PHP is such a great language while not understanding the massive ecosystem of devices and systems beyond simple web servers. Not everything is a website, which is precisely why I am such a huge advocate for using a purpose-built set of tools for application development versus using those which were grafted over from the front-end web ecosystem.

Advantages of Flutter

Flutter has some clear advantages over the alternatives. These advantages were designed into the underlying language and SDK to address common issues and shortcomings of other technologies. Here’s a simple breakdown of a few reasons why you should choose Flutter for your next project, or if you’re in any sort of leadership position, you should allow your developers to use it:

1. The Dart Language

Unlike languages which have struggled with standardization and often have many different versions with different language features (with many developers having no idea what these differences are), the Dart language has been designed from the ground-up to be an excellent tool for building client applications, and has been tuned up and optimized for developing UI. There are no competing standards, no grafting-in what should be standard features, and no strange language oddities.

Dart has a clean and incredibly powerful syntax that not only facilitates but encourages strong application architecture and design, not to mention team unification, standardization, longevity, ease of maintenance, and other things not generally associated with many of the existing tools for cross-platform development in general. It’s similar to other popular languages such as C#, Java, and TypeScript, meaning it’s easy for those with some experience to adopt and begin using right away.

2. Widespread Developer Adoption

In one short year, Flutter has become more popular than React Native (which was the most popular framework of it’s time) on both GitHub and Stack Overflow. What this means for your application is that there is a greater pool of resources to learn from, more skilled developers available to work on your app, and faster iterations over the technology itself (meaning that it will grow and mature faster and stay relevant longer).

Stack Overflow Trends — Comparison of Flutter vs. React Native

In the chart above from Stack Overflow Trends, we can see how Flutter has come out of nowhere and taken the lead. This is likely to continue, meaning that sooner or later it will be harder to find developers who are willing and able to support cross-platform applications using other technologies. This often takes a long time (several years) but it has happened time and time again within the software development community.

3. It’s Extremely Fast

Flutter apps compile down into native binaries that rely on graphics and rendering engines built in C/C++ which produces a very fast and highly performant application as a result. Flutter applications are capable of achieving a steady 60fps on most devices, and an incredible 120fps on those devices which support it. Many developers have noted the huge performance improvement of Flutter versus other cross-platform frameworks, which is a driving factor behind it’s rapid widespread adoption by mobile app developers. While it’s true that building truly native apps is hard to beat in terms of performance and smooth rendering, when it comes to cross-platform frameworks, Flutter has clear advantages over the competition.

4. It’s Easy to Learn (relatively)

While one could argue that no real production language or toolkit is truly easy to learn, there is a large difference between those with clear documentation and standard design patterns that work over a large set of use cases, and those with spotty documentation and highly disparate ways of accomplishing what should be very simple and straightforward tasks.

Aside from performance, another reason why Flutter is gaining such large-scale widespread adoption is due to the excellent documentation available and large number of high-quality examples for reference. This makes all the difference in the world for developers who are interested in learning a new framework, toolkit, or language, and this is especially true for experienced programmers who are more likely to spot issues with the design of a language or toolkit itself. Someone who has been programming for decades is going to become frustrated quickly when learning some technology that has poor documentation or conflicting examples of how to achieve basic tasks. Flutter is prized for it’s clear documentation and supportive community of experts and novices alike who are often eager to share their experiences and provide solid working examples of great design and development patterns for others to benefit from. There is generally less elitism surrounding technologies that are meant to be easy to use and adopt by a widespread audience.

5. It’s Well-Designed

Flutter was designed from the ground up on top of an excellent language (Dart) and a fast high-performance rendering engine (Skia). As a result of these design choices, years of experimenting at the cost of others has been avoided, and great decisions were made from the start regarding it’s design.

This results in a superior framework that encourages developers of all skill levels to build apps in a way that foster the use of good design patterns and best practices, rather than being prone to standards conflicts or built-in technical debt resulting from poor language practices (such as bad JavaScript, which most developers will agree is a nightmare at best). Someone familiar with building applications across a variety of devices for years is likely to see the clear advantages provided by Flutter within minutes of working with it, and newcomers are less likely to become frustrated since there are great examples available across the internet to learn best practices from.

Conclusion

Built from the ground-up to enable developers to create high performance applications in record time, Flutter avoids many issues that are challenging to even put into words and provides an excellent development platform that really has to be seen to be fully appreciated. It’s difficult to put experience into words, but I hope that this article provides some insight into why experienced developers would choose Flutter hands-down for future projects.

Follow me for Flutter examples demonstrating how to build animations, deploy to desktop or web targets, and achieve other useful things that translate well into real-world app development scenarios.

Thanks for reading and good luck with your next project!

Kenneth Reilly (8_bit_hacker) is CTO of LevelUP

--

--