Flutter- A Basic Introduction
Tags: Mobile, Android App Development, iOS App Development, Coding

The Landscape

Mobile apps had recently constituted a major chunk of the global user base, accounting for more than 70 percent of net usage. The advantage of apps is the simplicity of surfing the web directly, without compromising functionality . Web Apps recently have blured the line between apps, and websites. The app market is now valued at $106 billion, with an annual rise of 18 percent.

This sharp growth can be attributed to higher penetration within large consumer base in US, China, India, coupled with lower data costs.

App development is now considered a lucrative career field, divided between two titans, iOS and Android. There are also upcoming players to this niche space such as KaiOS ( Linux based), Taizen ( Samsung Electronics) and Fuchsia OS ( Google, Beta phase).

Why Flutter

Developers are usually provided with two tracks for app development — Native and Hybrid. The native frameworks are namely Android Studio from Google with Java and Kotlin Support, Xcode from Apple with Objective C, Swift.

Native apps have many benefits which includes, but not limited to

Higher performance Better integeration of libraries Huge and dedicated developer support forums Less bugs and errors.

However if one wants to release in both platforms simultaneously, native coding can become a challenge. One way to address this is by having a dedicated team, for both Android and iOS development. But this can increase cost overheads, and time constaints. A difficult task for startups, or a medium sized company having less resources.

Enter Hybird development, the motto being “ Write once, run anywhere”. Here the developer can write applications which runs in both environments without lengthy code base, or plugins. Some hybrid framework even support web capabilities. This will be invident from the upcoming sections.

The notable hybird Frameworks include React Native, developed by Facebook, Xamarin from Microsoft, Ionic and Mobile Angular UI, which are web based. Now we come to the topic at hand, Flutter. Being a late entrant into this space, the google team wanted to create a framework constituting the best practises, and marginalizing the errors, from previous releases.

Flutter framework supports iOS, Android and just recently, web app development using a single code base. The development language is Dart, which from experience, is relatively easier to learn. Some of the other advantages include

High performance as native apps Fast debugging A detailed library support, with regular updates UI is one of the best, as Google has incoporated default Material design techniques ( Shadows, bordering)

How it works

You will always hear the term Widget, when designing with Flutter. Widgets are the core building block with Material App ( incooprating material design) as the root and Scafold Widget (Container to hold other Widgets)

There is a widgets prebuilt for most purposes, ranging from TextFields, to Animation and even Search to Progress bars. The benefits of this is that you can easily incoporate additional features, by importing these prebuilt widgets, reducing coding time, and complex debugging.

There is a dedicated Widget library provided by Flutter, https://pub.dev/ where functionality can be incoporated based on your need. Also the library is regularly updated, and checked for issues.

Some features like in app purchases and advertisements, were tricky in hybrid development. Flutter recently solved the issues, with additions to the widget library ( in_app_purchase 0.3.4+16 and firebase_admob 0.10.3 )

Going into cloud services, integeration with AWS, and Google cloud including Firebase,was a breeze and worked with less, to no issues.

Fuchsia OS which was mentioned earlier, uses Flutter as the development environment. So learning the framework also has that added benefit.

But what about…

That being said, there are certain grey regions for Flutter. Mainly the Design layout, and Coding base are merged together, which can be a slight inconvenience, for migrating native developers (Android studio and Xcode has clear destinction on this front). Also version clashes can occur, specially for Xcode emulators, which might show errors on deployment.

Another thing is for higher feature development such as ML model integeration, can be little tricky. On this, there might be future changes and corrections.

Final Verdict

Given the pros and cons, it is upto the developer to choose his or her framework of choice. And that being said, the options are plentiful.