First Impressions: Flutter

Is it worth learning Flutter/Dart for mobile application development?

The world of development is vast and rapidly changing, particularly for mobile development. This is not hugely surprising seeing as the new iPhone models are being released so often, not even most iOS users know what the latest one is. The point being, developers are faced with a recurring question: Is it worth it to learn the trendiest tech stack or will it disappear from headlines as fast as it appeared?

Image credit: https://cdn.mos.cms.futurecdn.net/RVZJvQGzb3dSvmT667k4HQ-1280-80.jpg.webp

What Makes Flutter So Special?

Flutter has garnered a lot of attention recently for it’s cross platform capabilities. Before diving into specific perks, a brief overview may be helpful. Flutter is a Google project for an open source Software Development Kit made available in 2015. According to statista.com, it is the most popular mobile app development environment for iOS and Android. Flutter uses the Dart programming language that appeared first in 2011. Dart is probably most syntactically similar to Java. It is compiled into native languages x86 and ARM ahead of time for Android and iOS, respectively.

My Angle

I am completely new to mobile development. In the concept stage of mobile app creation, React Native was my first choice. I have had some experience with React web development, so I assumed it could be an easy transition. Luckily, I had a team mate interested in Flutter after being bombarding with hype, I could not pass up the opportunity to try something completely different. It was daunting jumping into the deep end without the familiarity of Javascript. However, the risk was well worth the reward.

Widget Library

Flutter offers a comprehensive widget library. Out of the box, it contains all the most common customizable widgets from NavBars to Forms. With a simple include statement, all of the widgets are immediately recognizable and ready to go with a plug and play vibe. The nice thing about the styling of the apps is that they change to match the default styling of the device (i.e. Cupertino look for iOS).

Backend Connectivity

I connected my Flutter project with Firebase for server-less support and the use of the Cloud Firestore non-relational database. The integration between these two systems has a small learning curve to understand the many ways to query the database. The predefined calls for performing CRUD operations are convenient on one hand… On the other, this require more experimentation to figure out exactly what is being returned from them in varying situations (versus creating one’s one calls and knowing what to expect from them). It was fairly easy to set up the initial connect using the Flutter browser interface and changing a few preferences in the build and package lock files within the project.

Documentation

My favorite aspect of Flutter is the decent documentation. It is all to common to find terrible documentation that is lacking in depth or that is too difficult to understand. The Flutter documentation is easy to navigate and discover information on. They provide code snippet examples that correspond to a sandbox to see the feature working live. The only downfall is that there is less information on third party website (i.e. StackOverflow) versus more established languages.

The Verdict

Is it worth learning Flutter ? YES. I would like to keep programming with Flutter/Dart and I have more ideas already for mobile applications that I can make in the future. Returning to the more general question of whether or not it is worth it to learn any trendy new stack or library… The answer is more complicated and really depends on specific motivations. Probably not so much if you are already deeply invested in another SDK and do not have an interest in learning something else. Otherwise, if time allow, I am always in favor of experimenting with innovation that comes highly recommended.