Flutter

Mobile App Development

Flutter Development - The 12 Primary Characteristics

In this article we are going to go through all the pros and cons of the Flutter technology for the purposes of application development. The categories which we are going to use for comparison are the same categories used for the Mobile App Development page. 

To learn more about other app development technologies (e.g. Flutter, React Native, Swift etc.) go to the Mobile App Development page.

INTEGU - Flutter

Table of Contents

1. Hybrid

Flutter is a hybrid technology, which was published as an open source project by Google back in 2018 (Flutter 1.0)

The general idea behind Flutter is to build the app as a canvas on the device. No device limitations. This also means that Flutter does not only work on a Smartphone, but can also be used on a Desktop.

In contrast to other hybrid technologies (e.g. Xamarin), Flutter does not rely on a bridge between the app and the UI elements. Instead it renders the UI inside the Flutter application before pushing the rendered canvas to the user. This approach give Flutter the performance advantage over bridge-based hybrid technologies, since the bridge will require more resources when working with a high amount of UI interactions.

2. Development Cost

As a hybrid technology, Flutter automatically gains the cost advantage, when compared with native technologies, that only one code base will be necessary.

In comparison to some of the other webview or hybrid technologies, Flutter provides plugins for the device APIs which works on both iOS and Android based on the same implementation.

Based on my own evaluation, I would argue that Flutter could be a candidate for the quickest hybrid technology in the development phase. (Hot reload without state loss and minimal OS device API integration)

However, since Dart, the programming language of Flutter, is a relatively new language, which not a lot of developers have adopted yet, it is difficult to say if you will be able to save anything on the development cost. Supply and demand of Flutter developers needs to be stable before that can be determined.

3. Programming Language

Dart is the programming language used to write Flutter applications as well as the language which the Flutter technology is build upon.

It is a programming language, which takes many of the features and principles from other modern programming languages (Java, JavaScript, C# etc.) and implements. This also means that even though a limited amount of developers can put Dart on their CV, it will likely not be the biggest burden to learn.

The language both includes OOP (object-oriented programming) elements and functional style programming (e.g. lambdas)

INTEGU - Dart

4. Page-By-Page Adoption

Flutter can be added to native iOS and Android applications, but it will have to be done as an external library. This means that the Flutter project should be created and included in the native project as a compiled library, which can then be implemented into the native application.

This naturally breaks up the development phase and is therefore not the ideal way of developing an application. But if you are already running and managing your two native applications, this might be a way of slowly migrating to one common code base.

5. Supporters

Flutter is supported and maintained by Google.

However, Google is not the only tech giant to show an interest in Flutter. The Chinese Alibaba Group has invested resources into developing apps and providing best practices working with the Flutter technology.

Given that Flutter is the youngest of the technologies presented in this article and also the one with the highest adoption rate (see the “Trends” section), I believe that it is only a question of when other major tech companies are going to adopt to Flutter.

INTEGU - Google

6. Open Source

Flutter is open source. The repository can be found here. Additionally, both publicly available Flutter and Dart packages can be found on pub.dev, which is a useful website for any Flutter enthusiast.

7. Device API-Access

Flutter can access native features (e.g. camera, GPS, sensors) through publicly available plugins. This is similar to Xamarin. However, unlike Xamarin, Flutter does not use a bridge to connect with the device’s API. Instead it access the device API from within the Dart device plugins. 

In comparison to some of the other webview or hybrid technologies, Flutter provides plugins for the device APIs which works on both iOS and Android based on the same implementation.

8. Performance

Performance achieved by Flutter, is comparable to Android and iOS, since the final app will be compiled as native code.

In contrast to other hybrid technologies (e.g. Xamarin), Flutter does not rely on a bridge between the app and the UI elements. Instead it renders the UI inside the Flutter application before pushing the rendered canvas to the user. This approach give Flutter the performance advantage over bridge-based hybrid technologies, since the bridge will require more resources when working with a high amount of UI interactions.

9. UI Consistency

Flutter contains UI components consistent with both Android and iOS, but it requires the developer to implement it. This is one of the only things, which I have found that requires individual OS implementation. The tools are accessible, but requires a developer to implement them in a way that looks and feels correct on the OS. 

10. Hot Reload

Flutter comes with hot reloading as one of the core features of the technology.

Flutter’s hot reloading does not require the application to restart nor to lose the state. Remaining in the same state might appear as a small addition to live reloading, but it is going to save many developer hours. Thereby not requiring the developer to navigate through the app to get to the same state as before.

11. Require Native SDK

To work with Flutter it is necessary to download both Flutter SDK as well as the Android and/or iOS SDK dependent on the platform.

All requirements and SDKs can be found through the Flutter installation guide. The guide will also provide links and access to the platform SDKs.

12. Require Specific IDE

Flutter projects can be opened in any IDE suitable for web development. However, if you want to take advantage of additional plugins developed for Flutter, Visual Studio Code and IntelliJ (which includes Android Studio) can be used.

Recommended Reading

Article

  • Flutter Repository – GitHub – Repository
  • Installation – Flutter – Blog
  • Hot Reload – Flutter – Blog
  • Camera Package – Pub.dev– Blog
  • Flutter – Camera – Flutter – Blog
  • Pub.dev – Pub.dev – Blog
  • Best Practices by Alibaba Tech – Alibaba – Blog
  • Dart Website – Dart – Blog
  • FlutterWiki – Wiki – Wiki 
  • Flutter VS Xamarin – CodeMagic – Blo

Video

  • Introduction to Flutter – Paul Halliday – YouTube
  • Combine Flutter and Android – MTECHVIRAL – YouTube 
  • Dart – Google I/O 2019 – Flutter – YouTube
  • How is Flutter different for app development – Google Developers – YouTube
  •  

About

Hi, I'm the Author

My name is Daniel H. Jacobsen and I’m a dedicated and highly motivated software developer with a masters engineering degree within the field of ICT. 

I have through many years of constantly learning and adapting to new challenges, gained a well-rounded understanding of what it takes to stay up to date with new technologies, tools and utilities. 

The purpose of this blog is to share both my learnings and knowledge with other likeminded developers as well as illustrating how these topics can be taught in a different and alternative manner.

If you like the idea of that, I would encourage you to sign up for the newsletter.

Cheers! 🍺

Didn't Find What You Were Looking For?

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages
Scroll to Top