What is Flutter, and why it seems like the future in app development?
Fast application development and native performance are just a couple of good reasons why developers are starting to turn their eyes to Flutter. But what else have Flutter to offer?
A brief story of App development technologies
When talking about the future, it’s sometimes necessary to visit the past for a moment.
We had the solutions to develop our website and share it with an audience who saw the final development on the same computer monitors where we programmed it. Then things started to change; screens got smaller and turned into mobiles, and the way we developed these new technologies radically changed how we used to do our work.
So apps that behaved awful or looked ugly began to emerge. Creating micro-websites via Cordova that had native functionality was fiction. There were apps so bad that you could even select the text where it should not be or zoom in where you were not supposed to zoom in… and many other horrors.
Xamarin and React
In 2013, Xamarin was born. A tempting technology for those who already had knowledge and experience in C # and .Net, so they could already develop apps as well. The advantage came from C #, a more advanced and mature programming language. When Microsoft bought Xamarin, it made it possible for anyone to develop a complete business application without paying the costs of a license.
In theory, it was an incredible proposition. Someone had turned the knob, and suddenly everyone with the knowledge on these platforms could create applications for phones and mobile devices.
In more recent times, native development has not stalled at all. Apple recently launched SwiftUI with great success, and Android has seen improvements in its native toolset.
The present for native development has never looked better, only held back by one problem: the act of writing the application n number of times, where n is the number of platforms we want the application to run on.
Writing the same application multiple times for multiple platforms seems to violate the Don’t Repeat Yourself (DRY) principle, one of the fundamental beliefs of software development.
And now, Flutter
If you’ve already heard of Flutter, you’ve likely heard of it in the context of mobile app development, and it’s enjoying a meteoric rise in popularity since its stable release in 2018.
Flutter is Google’s portable UI toolkit for crafting beautiful, natively compiled mobile, web, and desktop applications from a single codebase. Flutter works with existing code, is used by developers and organizations worldwide, and is free and open source.
We can also talk about the possibilities with flutter in the web development world, but that will be another post soon.
Flutter lets you create a native mobile app with a single code base. That means that you can use a programming language and a codebase to create two different applications (for iOS and Android).
Flutter consists of two crucial parts:
An SDK (Software Development Kit): a collection of tools that help develop your applications. Includes tools to compile your code into native machine code (code for iOS and Android).
A framework (widget-based UI library): a collection of reusable UI elements (buttons, text inputs, sliders, etc.) that you can customize to your own needs.
By achieving this, developers have more control over exactly how they want to design, how their applications look, and how they work.
Flutter uses Dart as its programming language, and all the appearance and business logic of the application is written on it. Dart language is type-safe: it uses a combination of static type checking and runtime checks to ensure that a variable’s value always matches the variable’s static type, sometimes referred to as sound typing. So every line of code in your application, whether used to visually describe your application, style your application, or control your application’s business logic, is safe in your writing.
Is Dart worth learning?
It is challenging to learn a new language. It is more difficult for developers, who already have many languages spinning around their heads, and even more stressful for full-stack developers who have even more languages to get stuck in for a while.
But Dart is somehow more straightforward to use than many other players in the programming language game, just as powerful (if not more powerful than all the rest), full of syntactic surprises that make writing code a much enjoyable and faster experience.
What does Flutter have to offer?
Right now, Flutter has more to offer than any other cross-platform solution out there today. We’re not saying that is the better, that’s a dumb and effective way to start a discussion, but it’s close.
The reasons it offers are the following:
Excellent control over in-app visuals. Because Flutter is rendered directly on the screen and controls every pixel on the screen (like a game engine), you have complete control over what is displayed. The fact that you can create a gradient that looks “a certain way” and looks the same no matter what platform it runs on is impressive. It lends itself to a wealth of creative and immersive experiences on a wide range of platforms.
Native performance. Flutter produces a native app for the iOS or Android device that it runs on. When combined with Google’s efforts to make all applications run at 60 FPS, the applications run smoothly, maintaining a high level of performance and a lower amount of memory usage on the device.
You get the correct cross-platforms balance. Flutter uses the Platform Channels to run native code for when you need platform-specific implementations. So your shared code is written in Dart, but the platform-specific is written in the native language of that platform.
How can I learn more about Flutter?
There is a surprising amount of technical information available online. For example, every week on the Flutter YouTube channel, a new “Widget of the Week” video demonstrates how to use a particular widget within Flutter.
Companies like Codemagic (a CI/CD provider) go one step further by offering technical guides on other areas of Flutter.
There is enough technical information to create most applications today, and you probably won’t run into problems that are unique to your project.
It is probably not going to be the only future, but it will be part of many future developments.
Flutter forms the UI component of Google’s upcoming operating system, called Fuchsia. If Google killed Flutter, it would be killing its UI for Fuchsia. You can’t use an operating system without a UI, so unless Google wants to create an entirely new framework and get everyone to migrate to it, they would have nothing to use.
Sure, Google could kill Flutter, but this would be slightly less likely than if they decided to go out of the search engine business. They would be wasting around a decade of work if they did.
So is Flutter worth using? Is it worth learning a whole new programming language, giving up the other available resources that other frameworks have that have been around for a long time, and trading all of that so that you can use Flutter to develop mobile apps?
Everyone always has an opinion, and ours keeps looking to the future and have fun while we do it!