Growing popularity of Flutter among Startups and Large Corporations

Growing popularity of Flutter among Startups and Large Corporations

In this blog, I will explain the benefits and challenges of using the Flutter framework in production and share my first-hand experience working as a Flutter Developer at a fast-growing organisation.

What is Flutter?

The Flutter framework developed by Google is a cross-platform mobile application development framework gaining popularity among startups and large corporations due to its ease of building applications and the framework's near-native performance.

The idea behind creating Flutter was to have a single code base that runs on multiple platforms, including Android, iOS and the web. Having a single code base reduces the development cost and time, making it quicker for companies to roll out new products at a reduced cost.

Flutter Widgets

Everything in Flutter is a widget. Widgets are the building blocks of an application when using the Flutter framework. The framework provides a variety of widgets like Columns, Rows, Buttons, Text, TextFields, etc., which make building complex user interfaces easy and intuitive. State management libraries like GetX make implementing complex UI transitions and functionalities easy. Using the Widgets provided by the framework, one can build custom widgets and use them as per their need in the user interface. This chain of parent and child widgets creates a tree architecture called the Widget tree.

Benefits of the framework

  • Reduced time and cost due to a single code base being supported on different platforms.
  • The language used for building Flutter applications is Dart, a language specific to UI development. When developers use UI-specific languages they can avoid common issues like unresponsive multi-threads or slow performance due to a heavy garbage Collector.
  • Flutter has near native performance because of the fact that Flutter application is built directly into the machine code, which eliminates any performance bugs of the interpretation process.
  • Flutter has its own engine. It uses the Skia open source 2D graphics library for rendering itself onto a platform provided canvas.
  • The ability to go beyond Mobile. Flutter for mobile and desktop is not yet production ready, but the capability to do that in itself is amazing.

Building Hybrid applications using Flutter and Native Technologies

Many organisations that want to use flutter already have a code base with native technologies, and moving to flutter in one go is not feasible. In such cases, organisations can make use of channels. Channels are an easy way to communicate with the native code. Flutter provides:

Method Channel

Method channels can be used to invoke a method on the native side or the other way round.

Event Channel

An event channel streams data from the native side to the Dart side. Event channels are used when we want to send data every time an event occurs.

Basic Message Channels.

Basic Message Channels are used to encode and decode messages using a specified codec.

Challenges with Flutter

  • Teams that used Flutter, including ours, reported multiple crash instances that were not related to the code at all. A lot of issues arise when the application needs to connect to native APIs or run complex processes.
  • Rewriting instance states. Flutter doesn't conserve data if an app's activity stops and the application has to recover the process from scratch.

My Experience working as a Flutter Developer at a fast growing startup

While writing this blog, I am a Flutter Developer intern at Park+. During my internship, I worked on the B2C application available on the Google PlayStore and the Apple App Store. Working as a Flutter developer, I discovered how building applications with cross-platform technologies like Flutter saves both time and cost for an organisation. I learnt about the various stages a new product goes through and the importance of different teams like business, design and tech for a successful product release. Overall it was a great experience.