Flutter Is Awesome For Mobile App Development
It's been about 5 months since I made the decision to move into the mobile development space. A decision like that takes an initial investment. An investment to learn something new and that means time and even monetary investment.
You have to invest some money into paying for tutorials and a lot of time into learning a new way of doing things. Having been developing for the web for some time, that came to my advantage as not everything was entirely new.
The path to becoming a mobile developer wasn't straight either as are so many things in life. I had to kiss my fair share of frogs before finding something that works. You see, there are so many ways to develop mobile apps and it takes time to find something that clicks.
The Paths To Choose From
One way to build mobile apps is to take the native approach where you build them using the native programming languages used by Android and iOS for the iPhone. I did not want to take this route because it meant having to learn two different tool-chains; not practical for me.
The other approach is to use cross-platform mobile development where the mobile app is developed for both Android and iOS from a single code base. This was the sweet spot, except there are many options here as well.
What Is Flutter
Flutter is an open-source UI software development kit created by Google. It is used to develop applications for Android, iOS, Windows, Mac, Linux, Google Fuchsia and the web. As you can see Flutter is pretty versatile but for me at present, as things can change pretty fast, my interest is what it can do for Android, iOS and the Web.
It makes use of the Dart programming language which is a client-optimized programming language for apps on multiple platforms. It is developed by Google and is used to build mobile, desktop, back-end and web applications.
Flutter apps are composed of widgets. Widgets can contain other widgets and you make use of widgets to build the user interface. It is a concept similar to components in React Native. Widgets assemble into a treelike structure of related widgets that together form the complete user interface.
Different Platforms, One Code Base
It is the nature of the world we live in that there are always alternatives; for mobile phones we have Android and Apple iOS. As the owner of an app, it makes sense to have your app on both platforms because if you don't, you miss out on users on the other.
Traditionally, to be on both platforms, you have to code two separate native apps. Two separate native apps means cost in money terms and time. Flutter solves this elegantly by allowing you to build for both platforms using a single code base.
The default mode is to use material design in developing the app but if you want to use the traditional Apple design in the app, the code can be modified to cater for that as well using the Cupertino design.
Awesome Code Editor Experience
I must confess, I do not have the greatest memory there is and have to constantly refer to documentation to get things done. If anyone ever told you you need a great memory to be a developer, they lied. Don't get me wrong, it is a great asset to have a great memory but just not a necessity.
I was so excited to see the great code help and support I got in Flutter. The intellisense is simply great and I refer to the documentation less than I otherwise would when developing in flutter. Compared to React Native, the code editor assist features are just awesome.
From completion of code snippets to even entire boilerplate of code, the experience is just great. Take the example when creating a stateful widget; there is no way I would remember the boilerplate and would have to check it every time. The code editor completes this for me easily every time.
Of Course I speak of my experiences from using Visual Studio Code as my editor and the experience might be different for those using other code editors.
I just wanted to articulate how coding from a single code base and having a great code editor experience makes Flutter simply awesome.