What we learned from using Flutter over the past one year

Featured Image
Introduction

Google’s Flutter is a relatively new reactive cross-platform mobile app development framework that has revolutionized the way native cross-platform apps are developed. This open source technology can be used for developing native Android and iOS apps with a single codebase. Using Flutter; you can quickly build applications for iOS and Android with a common language called Dart. It’s a full-featured mobile SDK that offers a complete set of tools helping us build apps. What began with alpha and beta versions that floated around since 2015, Flutter came across in stable version only in 2018 as Flutter 1.0. In quick succession, a second version was released on February 26, 2019 (Flutter 1.2).

 

Why Flutter?

When similar technologies like Xamarin, React Native, Ionic, or NativeScript work wonderfully to provide solutions for native cross-platform mobile app development, what’s different that Flutter offers, you ask?

 

Well, Flutter SDK embraces the reactive development architecture a bit differently than the rest. In reactive programming, UI contents are automatically updated as a developer updates the variables in the code. In case of React Native, the JavaScript bridge is used to access OEM widgets. Every time a react native app has to pass this Javascript bridge to access widgets it leads to performance issues.

 

With Flutter, we were able to skip the bridge altogether. The communication with the native platform happened organically, using Dart. Dart is a programming language created by Google. Essentially, it is an enhanced version of JavaScript. Dart is an object-oriented language featuring avant-garde compilation techniques, it is used to achieve a native code without an additional bridge which helps improve the overall performance of the app. Its syntax is clear and concise, unlike other languages. Our team is of the opinion that professionals well-versed at Java or C# found it relatively simpler to adapt to Dart. Furthermore, we believe that in the case of Flutter, there is no need to access the OEM widgets, as the SDK uses its own.

 

Using Flutter also saved us a lot in terms of time incurred for mobile app development. This was because the learning curve was very easy for an out team of skilled professionals. Although the Flutter ecosystem is ‘Widget’centric, it followed the same component logic like React or Angular and thus was fairly easy to grasp for the team on the whole.  , the ready-to-use UI elements available for use with Flutter help integrate the Material Design guidelines and Cupertino in the app effortlessly, cutting down on the development time enormously.

 

Our Learnings from using Flutter for Mobile Apps

 

+ Time Saving Ready-made Widgets Solutions for UI coding

As we discussed previously, Flutter comprises of only widgets. The screen in Flutter is strictly widget-only. Different types of widgets are present for text, graphic, buttons, even to layout other widgets. In the Flutter system architecture, all widgets and the components responsible for rendering widgets, are part of the application, not the platform. All these widgets in Flutter are organized in trees. We believe that this is what makes the task of rendering achievable. Thus, the task of UI customization that is time-consuming in cross-platform development, takes the minimum amount of time when you work with Flutter.

 

We always referred to the list of widgets available to work with at flutter.io, rather exhaustively. The design widgets abide by the material design guidelines provided by Google and Cupertino from Apple and are a huge time saver.  We are proud to claim that we created amazing UI for apps using these widgets, rather easily. We used different widgets in combinations to create layouts and to even achieve customisations in-app infrastructure. Compared to other approaches, Flutter also has a consistent and unified object model. What we loved the most about Flutter is the option where we can create our own widgets with the same tools the Flutter team used to create theirs.

 

+ The Learning Curve is Easy to Follow

Dart is similar to Java or C++ with its syntax. The language supports both strong and weak typing styles making it suitable for beginners. As Dart is a simple language, learning to use Flutter itself was easy for our team of skilled professionals. We believe even newbie developers with fragmented programming knowledge can easily catch up with Flutter. Detailed and well-structured documentation that Google furnishes for Flutter helps young developers adapt to it quickly. Google Team has in place well-classified docs and video lessons to help developers with on-boarding. Some practical exercises on Codelabs help developers further hone their Flutter skills.

 

Most commonly in Android app development, the work is divided into layout and code. While the layout is written in XML as Views, it is later referenced in the Java code. We love how Dart makes it possible to keep layout and code in one place.

 

Tech developers often opt for the compilation their programming language provides. Dart provides both Ahead-of-time (AOT) and Just-in-Time (JIT) compilation types. Our projects executed using Flutter compiled AOT tend to run faster in spite of a slow developmental process. In comparison, our JIT compilations incurred far less time but inversely affected the app startup speed. This may be because with JIT the compiler does it’s analyzing before code execution. With Flutter, the JIT compilation process is used during developmental stages and is later switched to AOT for app release.

 

Our Learnings from using Flutter for Mobile Apps

 

+ Hot reload Function for Instant Updates

The much-hyped Hot Reload button is built in Flutter’s framework and needs no additional plugins. The function made it possible for us to see updates in real-time and streamlined the app development process in a phenomenal way. We were able to fix whenever we spotted them without going back and forth again. Flutter helps developers transfer all changes from the code to a connected device or running emulator instantly. The function enhances the productivity of the app development process with quick iterations and minimal delays.  Additionally, it allows the scope for safely experimenting with your app, averting the need for rebuilding it from scratch.

 

+ Internationalization & Accessibility

Google facilitates many built-in opportunities to make an app product accessible to a wider range of users. For mobile app business, who intend to float an app in different languages and allow it to be used in different regions, it is imperative to use a code so it’s ready for localized content which is typically created at a later stage of app development. This code creation process is called internationalization. When we opted to use Flutter, we found that a widget based on the Dart intl package makes the process of internationalization far easier than it used to be on other platforms. What’s great is that the widget supports 24 languages, including currencies, units of measure, dates, layout options (for languages written from right to left), and much more. Additionally,  Flutter ensures web accessibility and supports components like large fonts, screen readers and colour contrast.

 

+ Debugging & Testing

Dart Analyzer and Dart Observatory are the tools that help find errors using specific commands and facilitate debugging in Flutter. AT Promatics, we used Flutter-supported IDEs and their specific debuggers for finding errors during the process of app development. Flutter apps can’t be debugged directly in a browser. As Flutter is a full-fledged SDK, it offers an automated testing toolset for three types of tests: unit test, widget test, and integration test.

 

Shortcomings of Working with Flutter

While things are unbelievably dreamy when it comes to cross-platform native app development with Flutter, we would like to point out towards a few setbacks that we configured during our experience with the platform. There is a dearth of third-party libraries for Flutter backed mobile app development, thus there is minimal automation of software development for programmers. Secondly, Dart is a fast and object-oriented language. But when compared to other technologies like JavaScript, C#, or native Objective-C and Java, it is not yet a popular choice among budding developers. Moreover, we found that since Flutter is a Google product, Flutter’s implementation for iOS app development can be a bit tricky.

 

Final Thoughts

Flutter 1.2 is still in an incessant stage. Thus, errors, missing features and bugs are inevitable. However, its quick adaptability and convenience definitely overshadow the minor flaws. Google and the Flutter team together are working relentlessly in perfecting the product for the app developers.

We have used Flutter for iOS and Android app development project simply because we think it is an optimal product by Google. It helps build beautiful, high-performing custom mobile apps solutions which adapt to the needs of the business. We understand that both iOS and Android developers face a different set of challenges. While Android developers were able to adapt to Flutter more easily, the transition for iOS developers required more time.

 

We expect that the Flutter team will work on some core plugins to improve them for a more synchronised app development procedure. There is also some talk about the introduction of more pre-styled widgets that meet iOS’ design specifications. Who knows if Flutter even replaces Android development someday in the future!

Ready to Take the Next Step?


icons

Gagandeep Sethi

Project Manager

With an ability to learn and apply, passion for coding and development, Gagandeep Sethi has made his way from a trainee to Tech Lead at Promatics. He stands at the forefront of the fatest moving technology industry trend: hybrid mobility solutions. He has good understanding of analyzing technical needs of clients and proposing the best solutions. Having demonstrated experience in building hybroid apps using Phonegap and Ionic, his work is well appreciated by his clients. Gagandeep holds master’s degree in Computer Application. When he is not at work, he loves to listen to music and hang out with friends.

Still have your concerns?

Your concerns are legit, and we know how to deal with them. Hook us up for a discussion, no strings attached, and we will show how we can add value to your operations!

+91-95010-82999 or hi@promaticsindia.com