Google Flutter for Mobile Development: is it a Good Idea?
In the world of mobile development, things are changing very rapidly, and some technologies are replaced by others, more advanced ones. Of course, everyone willing to succeed must keep up with the times. That’s why we're doing our best to follow the latest IT innovations and test new solutions in search of the one perfectly meeting market requirements and customer needs.
Moreover, we’re eagerly sharing our experience with you. And today we’d like to introduce you to Flutter, Google’s mobile app SDK. Flutter apps are becoming quite popular nowadays, and it's really interesting (and also useful) to figure out the reasons for the growing demand.
We’re going to tell you what Flutter is and how it works. Also, you’ll know when and how to use Flutter, and what are the benefits of this solution.
Simply put, you'll be able to decide on whether you should create apps with Flutter. You’ll have all the information you need to make up your mind.
What is cross-platform mobile development?
It is probably no secret to you that there are a few ways to build mobile programs; these ways include native, cross-platform, and hybrid development.
Sure, many prefer native development when the app is created in a language native to a certain platform: such as Java (Android), Objective-C (iOS). And, of course, this method has a lot of advantages, among which is the ability to use all the features and benefits of a specific operating system.
Though, the native approach has its drawbacks: let's say, in order to implement the same algorithms and user (or business) scenarios, developers must create a program for several environments in different languages. This means the company should increase its working time, budget, and efforts to maintain the final product. Agree, it’s tiring, difficult, and rather expensive.
Cross-platform development solves the above problems by focusing on several mobile platforms at once. It uses third-party programming languages, the code of which is compiled into each native application. The approach also has its cons (it's only natural!), but it greatly simplifies the development process. So by creating cross-platform mobile applications, the company reduces all sorts of costs (including man-hours).
By now, quite a few advanced cross-platform technologies have been built, and all of them are aimed at the creation of top-notch mobile services. In addition, new technologies are constantly emerging, such as Flutter.
However, before we start discussing Flutter’s main features, we want to tell briefly about other similar cross-platform solutions.
Xamarin undoubtedly ranks among the world market leaders. It provides developers with a unified C# codebase in order to make mobile services compatible with the most popular OSs (Android, iOS, Windows Phone). Besides, you can take advantage of Xamarin Cloudtest to test your apps on multiple devices.
With the release of Xamarin 2, the solution in question has become one of the best mobile development frameworks: this cross-platform technology has already been successfully used by more than 1.4 million developers from pole to pole. Moreover, the framework has a strong partner community which includes such large corporations as Microsoft and IBM.
Among its most popular features are Xamarin Studio IDE and Xamarin.Forms. Thanks to them, developers can use almost 100% of the once written code for all platforms. Besides, the framework ensures access to the native API and allows integrating Parse and Microsoft Azure.
Sencha Touch is another alternative to Flutter for iOS and Android app development purposes: a corporate framework aimed at creating universal mobile applications. It uses hardware acceleration techniques to achieve high performance and comes with several built-in UI components. Also, Sencha Touch provides a set of appealing themes, thereby simplifying the creation of mobile services with a memorable interface. By the way, you’ll have every chance to create beautiful UIs with Flutter too, but we'll discuss it later, in due time.
While Google Flutter is just beginning to acquire user loyalty, React Native has long won it.
It all started with React.js, made by Facebook to fix its chat. The solution turned out to be successful, and the company ported React to mobile platforms. This is how React Native was born, and now it's being used by Tesla, Instagram, Baidu, Airbnb, Walmart, and many other brands of the same level.
Later in our article, we'll try to convince you of the benefits of Flutter, but we should be honest: React Native has undoubted advantages too. First, React Native uses UI building blocks which are being also used by regular iOS and Android applications; therefore, it's close to impossible to distinguish a program created with React Native from a mobile service developed with Objective-C or Java (or other native languages). Among other things, React Native is simple but high-powered and scales well to large codebases.
Of course, the list can be continued, but let's stop here. Right now we had better move on to the topic of our article.
What is Google Flutter?
Google Flutter is becoming more popular every month. Judge for yourself, the dynamics is confirmed by statistics:
As you see, the growing impact of Flutter on iOS and Android app development is completely obvious. Definitely, technology deserves our attention!
So, why not pay it?
A bit of history
It was Google that provided us with such a cross-platform solution. And for a long time, from 2015, Flutter existed only in alpha and beta versions. The release of the first stable version took place several years later, on December 5, 2018 (Flutter 1.0), and the second was released soon after that, on February 26, 2019 (Flutter 1.2). And now we enjoy numerous Flutter app development benefits, among which is the compatibility of the created project with 3 operating systems:
We want to clarify at the outset: Flutter isn't a framework, although, a lot of developers call it that way. Actually, Flutter is much more, it's a full-featured mobile SDK and offers a complete set of tools helping us build apps. Moreover, it can be ported to almost any device with a display.
Though it wouldn't be a big mistake to call Flutter a framework either, and some sources do just that.
The core principle of Flutter
Flutter is a good option for Android/iOS developers. Why so? Let's deal with it in order!
To begin with, Flutter professes a different approach than the one used by React Native and Xamarin. The technology doesn't turn the source code into a native one executed by the platform; instead of this, Flutter independently draws all the screen elements.
So, a key feature of the system architecture (it's also the main benefit of Flutter) is that all widgets, as well as the components responsible for rendering widgets, are part of the application, not the platform.
On the one hand, this might be good (we’re able to get externally identical interfaces), on the other hand, such a method is fraught with possible difficulties (redrawing the interface requires a certain amount of memory and processor time). But first things first.
How Flutter works
It is in this language that a mobile application is being created describing the graphical interface and the entire operation logic. The result of the work is being added to the native application, along with images, fonts, and the like (of course, the whole process is automated).
At the same time, in the native app part, a single screen is being created where the Dart virtual machine executing Flutter should be loaded.
Thus, there are Flutter files and, in addition, virtual machines, which can be added depending on which application is being compiled, iOS or Android.
Our description is rather rough, the details of the process are not really important. In general, we guess you've understood the basic principle of Flutter for mobile development.
The virtual machine includes its own graphics engine which draws the app UI with all transitions between screens, dialogs, fragments, etc. However, we'll talk more about the graphics capabilities of the program when discussing Flutter app development benefits.
So, the second stable version of Flutter (1.2) was released on February 26th. What has been changed, what has been improved? Let’s see!
Improving the stability and performance of Google Flutter and plugins, including:
the new Dart SDK version (2.2), which leads to an increase in productivity by 11-16%;
fixing bugs in the video player, webview, and google maps plugins;
AppBundle support (Android);
An in-app purchases plug-in is being developed (but a new feature can already be roughly tested).
Improving the display and functionality of existing widgets (which also improves the convenience and quality of Flutter mobile app development):
text editing with a floating cursor;
a wide range of animation slowdowns;
improvements to the Material and Cupertino widgets;
new keyboard events and mouse-pointing processing: a preparatory stage required to support desktop-class operating systems (apparently planned). In the future, it can be assumed, Fuchsia OS will support, among other things, the desktop.
DevTools - a new web-based tool that developers who create apps with Flutter will appreciate. Its features include:
Source-level debugger, code analysis tool;
Widget inspector, which visualizes the hierarchy of widgets in the code (forms a kind of tree of widgets);
Logging view, where system and user log events are being written;
Timeline view allowing to analyze GPU, CPU, and lag of animation.
Key benefits of Flutter
We think you’d be pleased to know the reasons why Flutter becomes so popular today. We can list them:
Perspectivity of technology. There is an opinion that Google is planning, sooner or later, to replace the native Android app creation with Flutter mobile app development. So, Flutter has a promising future.
The convenience of work on different devices and platforms. It is provided by a portable graphics accelerator, as well as an accelerated compilation with fast machine code.
The high speed of the development process. Among Flutter’s main features is Hot Reload; its goal is to help you transfer all changes from the code to a connected device or running emulator, and do so quickly, even instantly. It leads to a cool opportunity to safely experiment with your app, without the need of rebuilding it from scratch.
A rich collection of widgets. Creating beautiful UIs with Flutter requires a minimum of time, which is possible due to a huge lot of template cross-platform widgets provided. They behave (and look) the same way on all devices (iOS, Android).
Code-interdependent UI. The programming language in which you make the application also plays its role in creating the interface. As you remember, when you build Flutter apps, UI is associated with the code and is part of it. So, it is possible to change the app interface with simplicity and elegance, focusing on the situation and the state of the program, the flow of data, etc.
There are actually many more Flutter app development benefits, we’ve brought to your attention only the most important ones.
When the idea of Flutter is no good
Yeah, Flutter app development is an excellent solution, but in some cases, it's not the best option. Let's take a look at its shortcomings (not so significant, by the way).
Heavy installation package. The installation package is quite large, as the Dart virtual machine is added to it.
The close relationship between app logic and UI, due to the fact that the program interface is created using the code. As we said, this is also a benefit of Flutter (because it opens up wide design possibilities). However, with an inept approach, a thin line between code and UI would lead to unpredictable consequences.
Double work. Sometimes you have to work with each platform individually: say, if you need to get phone contacts or something else that relates directly to a specific operating system. This, of course, increases the amount of work. So by adopting Flutter for mobile development and startups, you must be ready to make some effort. However, not too much: about 80-90% of the code will be common to all OS.
A fewer number of libraries. Using and learning Flutter may be more difficult due to the smaller number of existing libraries (compared to native iOS/Android development). But don’t worry: Flutter still has quite a lot of libraries and plugins, and they continue to appear at high speed.
Existing Apps Made with Flutter
While you are in doubt and pondering whether the game is worth the candle (namely, whether the idea of Flutter app development is a good one), some companies have already made their choice - and haven't regretted it.
So, let's talk about the existing Flutter app examples.
There are a huge number of dating applications, and Pairing is one of them. It is quite popular and has good demand. Its main goal is to create a special environment allowing singles to find their soulmates with comfort and safety.
As you understand, the Pairing app was built with Google Flutter. And Ronen Rabinovici, the co-founder of Pairing, endorsed this solution, although he agrees it has a few flaws we’ve mentioned earlier (say, some aspects of the application will have to be developed individually for each platform).
Nevertheless, the decision to use Flutter has proven correct, as Ronen Rabinovici says. From his point of view, the creators of Flutter took the best of the native development and the React-Native framework and offered a really cool product.
PostMuse is a mobile application allowing you to supplement pictures with stylish captions. You should choose the desired option from a large number of ready-made templates with reference to the seasons, vacations, working days, or just pleasant emotions. The processed image can be sent to friends, saved on the device, or published to Instagram.
The service also belongs to the Flutter apps. The choice of technology was successful: the founder of PostMuse named Andrei Diaconu admitted that Google Flutter had considerably accelerated the development process, and therefore, the application had been released in record time.
Also, among apps made with Flutter, we cannot help but mention KlasterMe.
KlasterMe is focused on working with text and graphics content. Users’re allowed to create and edit content, share the result of their work with friends, discover content to their liking, etc.
The visual component plays a big role in KlasterMe, and that’s why Abin Baby, the company’s co-founder (he is also a developer), highly appreciates the graphics capabilities of Google Flutter. According to him, the variety and customization of widgets provided allow you to get amazing results without any extra effort.
Of course, we also use Flutter for iOS and Android apps in our projects because sometimes the solution Google provided us with becomes the most optimal choice.
Our Flutter app examples include a pretty interesting case study, a detailed description of which is here. In this short article, we explain to you how to apply a gradient to a particular object in the picture (say, if you want to cover only the cat's face with a gradient). The task is more complicated than it seems at first glance, but Google Flutter helped us to solve it at a high level.
Google is actively promoting Flutter, and the approach is paying off: the mobile SDK is increasingly in demand. Moreover, soon Google Flutter might be able to push other cross-platform development tools back, especially if Fuchsia becomes more popular. So it makes sense to get acquainted with Flutter’s main features right away.
On the other hand, we’re well aware that, over time, a new open-source library to build cross-platform applications may appear, with every chance to surpass all the solutions described. Why not?
Anyway, we'll watch the mobile and web market and keep you up to date, so follow our blog.