For my team’s capstone project, we have decided to develop a mobile app, with Flutter being our main tool. We decided on Flutter, as it is cross-platform and allows mobile apps to run on both iOS and Android, and is relatively easy to learn. The only problem is that no one in the group had any prior experience using Flutter. Thus, I have spent a decent amount of time over the past couple of weeks attempting to get up-to-speed with this technology. Along the way, I noticed some interesting bits about Flutter that I would like to briefly discuss, as I think these facets are what makes Flutter unique.
One of the first things I noticed about Flutter in the beginning of my learning journey was how it is formatted. It uses Dart as the programming language, and it structured in a way I was not used to with other languages, such as Python, Java, or C. This odd format (in my opinion) is due to the fact that everything in Flutter is what’s known as a widget. According to the official docs at https://api.flutter.dev/flutter/widgets/Widget-class.html#:~:text=Widgets%20are%20the%20central%20class,their%20fields%20must%20be%20final). , widgets are defined as “… the central class hierarchy in the Flutter framework. A widget is an immutable description of part of a user interface. Widgets can be inflated into elements, which manage the underlying render tree.” They reminded me of HTML structure, as they have a hierarchy to them (children, parents).
Apart from widgets, another aspect of Flutter that I found interesting while learning is the use of stateful and stateless widgets. These are built-in widgets that make it simple to section your code into pieces that need its state to be preserved, and other sections where state does not matter. Because these come packaged with flutter, it helps make development of apps that need state easy to navigate.
Lastly, the final interesting point I would like to discuss is the ability to style directly inside of widgets. This is very cool to me, as previously, I had been used to frontend and backend components staying separated. With Flutter, it is possible to have widgets that serve a functional purpose, as well as style that particular widget in the same class. I found it nice to be able to create a widget for a button, with functionality to press the button, and style the button, all in the same section of code.
In summary, I would highly recommend Flutter to anyone that is interested in mobile app development, and are not sure if they want to dive into Android or iOS development. It is a tool that makes the possibility of doing both a reality.