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.
Flutter is a cross-platform framework for building iOS and Android apps. It was introduced by Google in 2017. Flutter’s homepage reads:
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:
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.
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.
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.
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 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.
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.
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.
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.
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.
We can’t wait to see what you build! 🚀
SIGN UP FOR OUR
Monthly hand-picked discoveries
and stories of thriving in a new world of design.
How to pick the right co-founders for a startup?
Co-founders make or break startups. They make for the base pillars of all its future successes. So how to pick the right people to start the business with?