In the world of cross-platform development, Flutter is considered one of the most popular and beloved tools according to reports by Statista and Stack Overflow. It’s quick, feature-rich, and provides a really smooth cross-platform app development. Let’s talk about the reasons Flutter is so good and its most common use cases.
Flutter: a brief history and the current state
Flutter’s history traces back to the times when Eric Seidel and his team decided they wanted to make the web faster. At first, the team behind the Flutter project simply wanted to speed up the rendering of Chrome pages, then one thing led to another, and eventually, Flutter was born.
Since its development team came from Google, no wonder Flutter used Google codebase a lot. It’s also worth mentioning that Flutter’s first name was “Sky” and it ran on Android OS only. “Sky” was announced by Google in 2015 at the Dart developer summit and the official release of Flutter 1.0 happened in 2018 only. During these four years, “Sky” has gone through lots of changes and finally became the UI SDK that we all know under the Flutter name.
The next Flutter version, Flutter 1.12, was released in 2019. Then in 2020 Google released Flutter 1.17.0 and this year, in March 2021, Flutter 2 became available. One of the core updates of the 2.0 version is the added support for web-based apps which was not available before.
Today Flutter is a widely popular cross-platform development tool and is in the top-three most loved tools according to the Stack Overflow report (.NET Core and Torch being on the first and second places, correspondingly). As of December 2019, Flutter had 81,200 stars on Github.
Flutter is widely used in several Google products (Google Ads, Google Assistant, Stadia), by eBay Motors, in the Philips Hue Flutter app, and in the app by the Alibaba Group. And needless to say, it’s also used a lot by software development companies that specialize in mobile app development and want to bring a native touch and feel to their cross-platform apps.
Flutter: technology type
Flutter is an open-source SDK though it’s also correct to call it framework (since it’s more of a framework than an SDK). Flutter runs on Dart programming language and utilizes Google’s Skia graphic engine for UI rendering.
If we break Flutter down, there are five main components that it consists of:
The Dart platform: Flutter makes use of many of Dart’s valuable features;
Flutter engine: enables low-level rendering support;
The foundation library: provides basic classes and functions for constructing apps;
Widgets: the main building blocks for developing a Flutter application;
DevTools: out-of-the-box tools that Flutter offers.
As for the principles that Flutter follows, there are three of them: “Everything is a widget”, “Composition over Inheritance”, and “Widget tree”. The first principle relates to the fact that Flutter uses widgets as construction blocks for its apps. Almost anything may be a widget: a style element, a button, a pop-up screen.
As for the composition over inheritance, in Flutter, widgets are composed of smaller widgets. Such an approach allows developers to combine different widgets as needed in order to obtain the exact needed behavior.
Finally, the widget tree means there are nested widgets that represent UI components. These widgets can be stateless or stateful and they help manage the app’s states better.
Now let’s have a look at Flutter’s most interesting features:
Hot reload: allows making changes in code and seeing them instantly in the app;
Less testing: due to the fact that Flutter allows writing one app for two platforms (iOS and Android);
The same UI for old and new OS versions;
Flexible and fluid UI;
Fast rendering: due to the layered architecture.
One of the cool features that Flutter offers out of the box is Flutter Doctor. As the name implies, this feature diagnoses the system and allows to quickly detect any errors, understand what configurations are needed, and install missing dependencies.
This command line utility is really helpful as it “guides” the developers through the development environment set-up and helps ensure everything looks good. And as soon as Flutter Doctor notifies you that everything is fine, you can get down to app creation.
The use of Flutter: most common cases
Since Flutter provides really quick app development and allows creating rich and fluid UIs, there are certain areas of application where Flutter performs at its best - learn about these use cases below.
Apps with rich UI
Flutter has a rich set of custom widgets that allow developers to do almost anything to the app’s UI. You can add animation, play around with buttons and styles, and apply different effects. One more great thing about Flutter UI is that Flutter pays immense attention to visual details (which is something you don’t commonly see in other front-end frameworks). In addition to that, Flutter also supports Material Design, Cupertino, and visual oriented widgets for iOS and Android OSs so it adds to the UI created with Flutter.
There are many features that make Flutter so good for MVP development: hot reload, reduced Dart code, a set of available custom widgets. Moreover, Flutter displays a high level of performance and speed and hence, significantly reduces time-to-market. In addition, the development of cross-platform apps is quite cost-saving and this is the reason why startups love Flutter so much.
Flutter Pros and Cons
While Flutter is one of the top developers’ picks when it comes to cross-platform development, there are certain things to keep in mind when working with it. The knowledge of its pros and cons will help you decide what exact project Flutter is most suitable for and when it can be replaced with another tool.
Flutter is a great tool when you need to create a comprehensive, beautiful UI in a record time. Custom buttons, lists, input fields, graphs, and charts? Can be done easily. UI under different screens in portrait and landscape? Nothing can be easier. What about multiple platforms at once? You are most welcome.
Flutter offers rich animations, transitions, and usability due to its declarative UI. And don’t forget about Dart under the hood and everything it offers, including null safety, futures, dynamics, and streams. If you need to switch to native code, look for a ready-made plugin on pub.dev (at the time of writing, there are about 15992 of them). And if you didn’t find it, you can simply write your own and share it with the community - and it won’t be that difficult.
At a first glance, the Flutter UI code might look cumbersome due to too many commas and round brackets. This can be easily resolved by the competent breakdown of large composite widgets into smaller ones.
Should you use Flutter? Definitely yes because it’s a really efficient tool. Should you use it always though? For that question, the answer is perhaps. If the project has a lot of specific requirements related to a particular platform, then you should give Flutter a second thought and consider other tools as well.
Nikita, Full Stack Developer
Flutter is a great tool when it comes to creating rich and beautiful UIs. At SoftTeco, we frequently work with Flutter, and every time it rewards us with smooth performance and high speed. However, we’d like to remind you that every development tool has certain limitations so if you consider Flutter for your project, double-check it will be suitable for all your needs.
Do you have experience with Flutter or have anything to add to the article? Feel free to comment and don’t forget to sign up for our newsletter to stay updated on our blog news.