Flutter – Pros, Cons and Why

Sep 20, 2021 | Mobile Apps | 0 comments

Whether you shopped on Alibaba, ran an ad campaign on Google Ads, made payments with Google Pay, or used a digital coupon, you’ve likely witnessed the results of Flutter’s still comparatively short history.

After its alpha launch in May 2017 and the official stable version release in December 2018, it didn’t take Flutter too long to gain incredible popularity, judging by the number of stars on GitHub (119k vs React Native’s 95k). And it keeps increasing, substantiating the unfading interest in the product.

In March 2021, the second generation of Flutter was released, with more upgrades and enhancements offering a better experience for developers and users alike. So, let’s take a look under the hood to discover Flutter’s advantages and drawbacks are there behind Flutter to help you decide whether it fits the parameters of your next app.

Same UI and Business Logic in All Platforms

Basically any cross-platform framework provides a way to share codebase between the target platforms. But there are no such application frameworks that allow sharing both the UI code the UI itself besides Flutter.

To illustrate, here’s an example of how UI rendering looks like in most cross-platform frameworks:

This kind of a rendering process makes building an app that looks native on every platform simple. But the devil’s in the details. Relying on platform-specific components for rendering provokes a need for a property mapping layer for the platform widget and framework widget data synchronization. That’s what requires mapping every animation into a platform-specific widget call. So much more complicated than it needs to be, right?

In contrast, Flutter doesn’t need any platform-specific UI components to render its UI. The only thing Flutter needs to show the application UI is a canvas to draw onto. And here’s how it looks like:

My App vs Flutter

The Flutter’s way of rendering makes the framework really stand out from the crowd eliminating any worries about the UI consistency on different platforms.

In brief, sharing the UI and business logic, which is possible with Flutter, saves time, effort and the health of the developer while not affecting the performance of the end product.

Reduced Code Development Time

Building a usual mid-size Android app takes at least 40 seconds to get shipped onto the test device. And sometimes, it can take forever just to adjust a small visual aspect in the layout. Some might say, ‘Wait, but Android Studio has a layout preview for that.’ And it does. Yet, of course, the feature is limited and doesn’t always work as expected, especially with custom views.

Flutter’s “hot reload” feature, in turn, allows seeing the applied changes almost instantly, without even losing the current application state. And this is exactly what makes Flutter app development several times faster due to the increased development speed.

Besides, the Flutter team has put lots of effort into providing a wide variety of ready-to-use widgets. Most of them are incredibly customizable, saving time like no other framework before. In addition to numerous core layout widgets, Flutter provides a large set of Material and Cupertino widgets that perfectly mimic the behaviour of each design language. Here’s how they work:

Your App vs Flutter

Altogether, you skip several crazily time-consuming steps in app development when using Flutter, which makes the entire process faster, simpler and less worrisome.

Increased Time-to-Market Speed

This one is pretty straightforward. Flutter development framework functions quicker than its alternatives. In most cases, you can expect a Flutter app to require at least two times fewer man-hours compared to the same app developed separately for Android and iOS. The main reason is dead simple: you just don’t have to write any platform-specific code to achieve the desired visuals in your application. Any 2D-based UI can be implemented in Flutter without interacting with a native application counterpart.

Aside from that, Flutter provides a declarative API for building UI, which noticeably boosts the performance. This is most obvious when it comes to visual adjustments.

Similar to Native App Performance

Application performance is crucial for good UX. While it’s hard to tell the exact figures, it’s safe to say that Flutter application performance in most cases will be indistinguishable from the native app and even better in complex UI animation scenarios.

Why? Contrary to the approach of most cross-platform frameworks, Flutter doesn’t rely on any intermediate code representations or interpretation. Flutter application is built directly into the machine code, which eliminates any performance bugs of the interpretation process.

Eventually, one can get the release application fully compiled ahead of time with Flutter.

Custom, Animated UI of Any Complexity Available

One of the biggest advantages of Flutter is the ability to customize anything you see on the screen, regardless of how complex it may be. While it’s usually possible to do a very custom UI on the native platforms as well, the amount of effort required differs by the order magnitude. Here’s an example of such simple yet custom UI:

Flutter App

However, Flutter makes the process more flexible and versatile without adding to the workload. Shared element transitions, shape/colour/shadow manipulations, clipping, transformations – Flutter allows you to perform all of these effortlessly.

Own Rendering Engine

Flutter allows you to do so much stuff with your apps that aren’t available on other platforms. Obviously, it requires the framework to be pretty powerful. In fact, most of the points presented above wouldn’t be possible without a high-performance cross-platform rendering engine.

Flutter uses Skia for rendering itself onto a platform-provided canvas. Because of the engine, UI built in Flutter can be launched on virtually any platform. Putting it differently, one no longer has to adjust UI to transfer it to a platform, which simplifies the development process hugely.

Simple Platform-Specific Logic Implementation

Besides the UI, many real-life mobile applications rely on advanced OS-level features, such as fetching GPS coordinates, Bluetooth communication, gathering sensors data, permission handling, working with credentials, etc. Many of these are available when developing a Flutter application through a ready-to-use plugin supported by Google.

Of course, there can be cases of the application relying on an OS-level feature that is not yet available as a plugin. Flutter provides an easy to use way of establishing the communication between platform-native code and Dart through platform channels. This way, one can implement anything that a native app can do on a Flutter app, with just a little extra effort on the native side. Here’s an example of how channels function:

Flutter App Client

The Potential Ability to Go Beyond Mobile

With Flutter, you can go far beyond Flutter app development on mobile. There’s also Flutter for Web and Flutter Desktop Embeddings now. Flutter’s transition from a cross-platform mobile application framework to a full-blown cross-platform development tool is complete.

Even though everything except the mobile part of the framework is not yet considered production-ready, an experienced Flutter developer can make a pure Flutter app run on any major platform today, including Android, iOS, Web browser, Windows, macOS, Linux, and even embedded devices. And the app will function properly with no changes to Dart code.

Cons of Flutter Development

Any technology has its weaknesses, especially in the beginning of its existence. Immaturity alone and uncertainty about how things are going to develop with the new product can scare off potential pioneers.

So, what are Flutter’s drawbacks?

Lack of Third-Party Libraries

Third-party libraries and packages play a big part in automating software development for programmers and relieving the need to code everything from scratch. These libraries are mostly open source, easily available, and pre-tested – who wouldn’t want to try a tool that’s been used and tested in different environments before?

For many older and more popular technologies, finding the needed package is not a big problem, while for newer ones it’s often an issue. However, as of today, there are more than 15k+ packages on Flutter’s official resource and the number keeps growing. Of course, it’s less than for its main competitor, React Native, but it’s more than sufficient. Plus, there are lots of pre-set widgets in Flutter out of the box that allow for covering most of the development cycle without any additional third-party tools.

Dart, Again

Dart is a great language by itself – its paradigm should be familiar to most programmers; it’s fast and object-oriented. But it often loses in comparison to other technologies, especially giants such as JavaScript, C#, or native Objective-C and Java. Not many beginning developers will pick up Dart on their journey so finding new people for your mobile team can be a challenge. This should be something to consider when you’re choosing a cross-platform approach.

Larger App Size

Developers go to great lengths to minimize the size of an app. Users have limited storage on their phones, so it’s much more preferable to release an app that won’t make them delete it in favour of precious photos or a music library. To decrease the program size, programmers tend to avoid animations, bring the number of libraries and packages to a minimum, or compress images. 

Since it has the built-in widgets instead of using platform widgets, Flutter’s apps minimum size is over 4MB, which is definitely bigger than native Java (539KB) and Kotlin (550KB) apps – and that’s for the bare minimum app. Although, to be fair, its competitors share the same problem, and probably even more so – the release version in Xamarin will take almost 16MB and 7MB in React Native.

Why is Flutter a Good Solution from the Business Perspective?

There are some things that pose a drastic value for a business. These are the stability of a platform, its performance, a wide talent pool – it’s relatively easy to hire a Flutter developer – and the guarantee of successful further tech/product development and improvement. The reason is that issues and flaws in a platform or technology in any of the listed aspects provoke the occurrence of risks, along with direct and indirect financial losses for your company.

From this point of view, Flutter lowers risks for your business:

  • No problems with product development are likely to occur since Google is creating Fuchsia OS, which works with Flutter just fine
  • Using Flutter won’t cause you trouble finding engineers because there are already so many fans among Android developers in the community (check feedback here and here)
  • Ease of integration: the list of global companies using Flutter keeps extending with such representatives as Alibaba, Google Ads, AppTree, Reflectly, and My Leaf, which is the proof of Flutter’s uncompromised quality.

All these aspects make Flutter a solution for a business to prevent obstacles to seeking specialists, adjusting to new technologies and integrating the tool into the system. Compared to the alternative cross-platform approaches available, Flutter poses minimal risks to a business and therefore is worth to be the number one choice for your business.

Conclusion

As you can see, Flutter is one of the most innovative coding technologies on the market right now. For businesses looking to create applications on both iOS and Android, Flutter is a great option. If you are seeking apps with amazing UI and high performance — Flutter is the best option as well. We at AppleTech have the knowledge and expertise of developing Flutter based applications. Reach out to us to turn your concept into a solution.

We're Here To Help!

6 + 11 =

Office

A-FF/02 Mayfair Corporate Park
Vadodara, Gujarat
India

Call Us

India: (+91)-972-572-1717
USA: (+1)-203-987-2021