Flutter pros and cons
Flutter became the most requested cross-platform technology on Stack Overflow. The reason is a single code base. It is easier to maintain: artifacts are centralized, there is no duplication of logic and edits of the same bugs for each platform. And people need less to support and create it - there is no need to maintain two native developers.
What is a Flutter?
First, Google told the world about the idea of Flutter in May 2017, and in 2018 released the first version for developers, since then the platform’s popularity has only increased and it has already managed to win its fans among developers. Currently, Flutter GitHub has collected more than 86 thousand stars. More than 30% of developers have already managed to work with Flutter.
Flutter is an SDK for building fast-moving and engaging cross-platform mobile apps provided by Google. Dart is a development language for Flutter apps. Flutter supports compiling code on both Android and iOS using a single code base written in Dart. In 2020, it received enhanced functionality and now can be used to create Flutter web apps and Flutter desktop apps (for macOS). Of course, these platforms are being tested in beta and alpha, respectively.
Flutter is a unique cross-platform tool type. Flutter does not need intermediate components to connect to device features such as a camera or Bluetooth. This leads to better performance and helps create a great UX.
Flutter’s strong suit allows you to create custom app designs. Flutter compiles into native code and does not use web view components in applications. But it uses its own user interface components instead of platform-specific ones like UIView in iOS or Fragments and ViewGroups in Android. Flutter also supports Material Design and Material Theming in its user interface components. Therefore, developers do not need to look for external widgets that allow you to quickly and conveniently create external interfaces.
Benefits of using Flutter
Flutter has a number of advantages over its competitors. These advantages are inherent in the programming language and a set of development tools that allow Flutter to solve problems and disadvantages that other technologies cannot cope with.
Pros of Flutter:
Mild learning curve
One UI design
Money and time economy
Let’s now consider the advantages of Flutter:
It is no secret that programming languages often experience problems bringing to common standards, and different versions of these languages differ in functionality. Moreover, many developers are guided in these differences with great difficulty. But the Dart language was conceived from the very beginning as a tool for creating client apps, optimized and tailored for user interface development.
The benefits of using this language are:
there are no competing standards;
no imposition of language tools adopted by the developer community;
there are no oddities inherent in many programming languages;
no heap of completely incompatible design patterns;
finally, there is no need to have another tool-disaster among the standard functionality and tools.
Dart has a clean and incredibly powerful syntax that sets ideal conditions for creating a clear architecture and design of the application, not to mention ensuring coherence of programmers working together, durability, ease of maintenance, bringing to common standards, and much more than most other tools for cross-platform development. For those who have already worked with such popular languages as C #, Java, and TypeScript, it’s easy to switch to Dart and start using it right away.
Flutter has outperformed React Native in both GitHub and Stack Overflow. Here you get a powerful supply of resources for training, more qualified developers who are ready to work on your app. And all this in the conditions of the rapid growth of the technology itself, which is rapidly developing and does not lose its relevance longer than those technologies that for many years basically remained at their previous level (for example, React Native).
This graph clearly shows how Flutter suddenly appeared out of nowhere and immediately burst forward. It leadership is likely to continue, it may turn out that you will not find developers who are ready to support cross-platform apps using other technologies. And although it may take a long time, such a prospect is quite real, because such metamorphoses have already occurred more than once in the community of software developers.
Flutter apps are compiled into machine code using the graphics and visualization engine built into C/C++, so applications are very fast and high-performance. They are capable of stably delivering 60 frames per second on most devices and up to 120 frames per second on devices supporting Flutter.
Using Flutter gives a more noticeable increase in productivity compared to other cross-platform technologies. This was a decisive factor for the transition to Flutter many mobile app developers. It is worth emphasizing that we are talking about cross-platform (or platform-independent) technologies, where Flutter has a clear advantage over its competitors in performance and visualization while achieving such superiority is unrealistic when creating native apps.
Mild Learning Curve
Another reason for the rapid growth of Flutter's popularity among developers (in addition to high productivity) was the availability of detailed documentation and a large number of examples. And this is very important for developers who want to learn a new platform, a set of tools, or a language.
And it is especially important for experienced programmers who already have an eye on them, and they can easily find errors in the language design or in the toolkit itself. They quickly become disillusioned with the new technology, when in the process of studying it is discovered that it has poor documentation or examples of solving basic problems contradict each other.
Flutter is valued for its clear documentation and friendly community of developers, bringing together experts and novices who are ready to help and share their experience, providing excellent working examples of their design models and development templates. A welcoming atmosphere reigns here, facilitating the easy development of technologies by a wide range of users.
One UI design
Flutter helps create great UI designs for Android and iOS mobile apps.
Using a single code base, you can develop only one user interface design and use it for both platforms. This will save you time and cost of the designer work. The Flutter cross-platform app usually follows the principles of Material Design, with minor changes for different platforms (which Flutter usually processes on its own) or makes the entire user interface look individual, with elements based on the best solutions taken from iOS and Android.
Saving Money and Time
Crisis conditions will help Flutter: more and more companies will see this technology as an opportunity to quickly go online and expand their influence on electronic platforms. Flutter’s MVP applications can actually be created in 2-3 months, and full-fledged development will cost on average 30% cheaper than creating two native applications. So the framework will save two important resources - time and money.
The project is different for the project: somewhere Flutter can save 15% of the budget, and somewhere up to 50%. Another important advantage of technology is that its use reduces the time-to-market indicator. Delivery of new features in production is faster, which means that the product receives a significant head start for development and can bring more money.
Another major benefit of the SDK is the rapidly growing and vibrant community. Google and company fans provide excellent support for developers and users. Flutter has structured documentation and a large number of real cases and examples of the implementation of the main tasks of mobile development. You can find all the necessary information and share experience on the resource https://flutter.dev/community.
Shortcomings of using Flutter
There are no uncompromising solutions, and Flutter is no exception. Here are a few reasons why Flutter might not be the best tool for a particular app.
Cons of Flutter:
Flutter Developers Flaw
A limited set of tools and libraries
Massive file size
Weak iOS features support
Lack of password manager support
Let’s now consider the disadvantages of Flutter:
Flutter Developers Flaw
It may seem that everything is perfect in working with the framework. A significant difficulty is to assemble a development team. Any business project will inevitably face these risks for objective reasons:
The labor market for this technology is only being formed. At the time of writing this article, no more than 200 resumes were posted on work sites for the Flutter keyword for all CIS countries, while Android developers' offers in Ukraine alone were 7-10 thousand.
Most job seekers are new to Flutter. This is because there is simply nowhere to get real experience - there are few projects on the framework.
Gathering a strong team of more than 5 developers on a Flutter project is a difficult task that takes time. One of our banking clients at the development stage had such a problem when switching to an inhouse. As a result, the team was assembled, but it was worth a lot of effort. So for some time, you have to put up with a distributed team.
Limited Set of Tools and Libraries
Flutter is a new cross-platform app development framework. Many Flutter functions are in alpha and beta testing and may not always work properly. In addition, you can't get the necessary functions in the current library in some cases, because the platform is still being finalized. Flutter will take some time to create the necessary tools, expand functionality and develop the community.
Massive File Size
Modern users do not want to sacrifice their favorite song or game in favor of the next application, so one of the main tasks of the developer is to create the smallest application size. In order to minimize code size, programmers go to different tricks: they do not use animations, reduce images, and use a minimum of packages and libraries.
The framework shows poor results. 4 MB Flutter app, on other platforms it has a weight of 500Kb. Perhaps Google will fix this shortcoming, but until it takes effect.
Weak iOS features support
The fact that Flutter is a Google product makes the quality of support for iOS applications worse. If most of the SDK functions on Android work correctly, then there are problems with iOS. For example, when photographing on Apple devices, the application deletes all EXIF data. Because of this, the photo is displayed with the wrong orientation, without location, without date, without the correct gamma. Today, iOS special features (VoiceOver, Guided Access, Captioning, and Audio Description) are practically not implemented.
Lack of Password Manager Support
Using your own, not native widgets has its drawbacks. For example, there are problems using certain Android and iOS features. Flutter applications currently have problems with autocomplete input fields. This is especially noticeable if you need to implement password extraction from built-in or third-party password managers. This issue is described in detail (https://github.com/flutter/flutter/issues/13015) but has not yet been resolved.
What applications can be developed on Flutter?
In short, any. Now Flutter is widely used to create apps in Alibaba, Yandex, Airbnb, Uber, and other large companies.
Using Flutter, you can create applications for:
retail (loyalty programs, catalog, online store);
banks and fintech (work with small business);
suppliers and franchisees;
large business (contact centers, courier control, organization of internal processes).
Flutter for Retail Apps
In most cases, retail apps are an understandable set of basic functions: look at the catalog and current promotions, compare products, find out where the nearest stores are, check the balance of the loyalty card. This is especially evident in food retail. Quite a large amount with an identical result on both platforms, writing separate code for each of them will be wasteful. But business also goes for it to provide the user with a fully native look’n’feel. In a situation where Flutter successfully copes with this task, it is more logical to make a choice in favor of cross-platform development.
Flutter for Bank and Fintech Apps
In the banking sector, they are wary of new technologies. In fact, Flutter can be even safer than native apps. While reverse engineering can restore the source code for the latter, and even after obfuscating the code, its structure and some class names are preserved, then for Flutter apps it is pointless to reverse engineer - the sources are compiled into native code and are not human readable.
In addition, applications on Flutter can use the security technologies of the platform itself: Touch ID, Face ID, or a fingerprint scanner. There will be no differences from native development since native APIs are used.
The largest digital bank Nubank (more than 20 million customers outside of Asia) has united its development team on a single platform and is already sharing the successful case of Flutter integration into a mobile app.
Flutter for enterprise applications
The budget for internal applications is usually several times lower than for client applications. The ROI of internal applications is almost always lower, so investing in them is not advisable. In addition, internal applications are unpretentious to the UI: the employee will be required to use the mobile product of his employer, he has no alternatives. If the use of the application is supposed to be on service devices, then even joyfully. But if the company really goes into the mobile business, builds its own information system, and supports the concept of BYOD (Bring your own device), then everything becomes much more complicated. It is necessary to support both platforms and a whole fleet of smartphone models. And the development budget doesn’t get anymore ... Flutter comes to the rescue.
For example, in the KFC restaurant chain, employees are given service devices on Android, but top management uses the same application on personal phones, and they mostly have iPhones. Flutter pleased everyone.
What applications is Flutter not suitable for?
If the app’s tasks are closely related to hardware and you need deep optimization of performance (for example, you have a mobile stock exchange), then it’s better to evaluate this depth at the start. In some cases, this needs to be done on the Android and iOS side separately, and here Flutter will not be able to show resource savings.
Another obstacle is if the app is imprisoned for augmented reality. AR requires deep integration with the platform, which makes the idea of a cross-platform application meaningless. This is true for the auto business, furniture stores, or interior salons, where you need to see the product in a 3D model.
Is Flutter a good choice?
We are often asked whether to think about developing the Flutter app? We can say “yes” for many reasons.
To support native apps, synchronization of two teams is required, the costs of testing, release, further support, and update are also doubled. Template projects with a small life cycle or a low degree of complexity, it makes no sense to write on the native.
The need for a cross-platform business has matured for a long time, but before Flutter, technology flaws were critical for serious projects. Google managed to resolve these issues, so more and more customers are interested in it.
Flutter projects are not divorced from the experience that has accumulated over the years in the community of mobile developers. For example, the libraries available in native SDK apps and platform APIs can be used for Flutter apps. This makes the framework more versatile and easy to learn.