What Is Flutter and Why Is It a Big Deal?
3 Jun 2021
Flutter is Google's software development kit for building visually appealing web, desktop, and mobile applications with a single code base. After the alpha release in May 2017 and the official stable release in December 2018, Flutter quickly gained popularity among tech enthusiasts. In March 2021, with the launch of Flutter 2.0, more updates and improvements were provided for the developers to have a better user experience.
Since we’ve been using Flutter in some of our mobile products for the past couple of years, we decided to share our vision and experience to help you determine whether it’s the right technology to choose for your next app.At VOLO we always keep our knowledge up to date and are always on the frontlines when it comes to experimenting and mastering the latest technologies. Last year, we decided to deep dive into new cross-platform technologies (KMM, Flutter) and try them in our learning sessions. As an Android developer, I was initially skeptical of cross-platform solutions and thought it would be impossible to achieve native-like performance and stability through them, but my teammates that were well versed in Flutter, convinced me to give it a try ;). In the process of learning this technology and then using it in production, I became quite fond of it and found more benefits than I initially expected.
Easy Learning Curve and Great Documentation to Get You Started
The Flutter documentation covers all the basics quite well, as there are many examples in the cookbook and the Flutter Gallery. It also offers an official resource containing verified Dart and Flutter packages and libraries. Flutter knows its target audience well and offers detailed onboarding guides for both Android and iOS, including 1:1 comparisons between itself and native technologies. The official Flutter documentation is an excellent place for people to get started.
We spent around 11-12 weeks on our intensive Flutter learning session, which was divided into week-long iterations. Each learning iteration was followed by a weekly guided team meet-up to discuss questions that had come up and set learning goals for the next iteration. Our main learning materials were the official resources and a Udemy course to structure our studies. In the third week, we were already able to start working on a sample application development and added more functionalities and features after each discussion.
Widgets! Widgets! Widgets!
Every UI component in Flutter is a widget, from text padding to a button. It provides its own, ready-to-use widgets that come from its high-performance rendering engine. Flutter solves the hardest part of the other cross-platform frameworks, namely getting rid of BRIDGE. It does not use OEM widgets but provides its Material and Cupertino-styled widgets. Flutter moves the widgets and the renderer from the platform into the application, making them customizable and extensible which also helps to deliver 60 FPS (frames per second).Due to the framework's UI components, the app will have the same look and feel regardless of the OS version. While this solves one of the most common problems in mobile development (having consistent design across different platforms), it also gives rise to a new one. If Apple or Google introduce a new UI component, the Flutter application will not reflect that until Flutter Cupertino or Material Components are updated.
The language that lies in Flutter’s foundation is Dart. It’s a modern object-oriented language that will remind you of Java or C++ syntax-wise. It forms the basis for some of the most fundamental Flutter attributes.
Ahead-of-time(AOT) compiled programs tend to run faster because they were compiled earlier. In this case, however, the development will slow down. Just-in-time(JIT) compilation results in faster development cycles, but it does not affect the application startup speed because the compiler does the analysis before code execution. Flutter combines both by using JIT compilation during development and switching to AOT in release mode.
With Dart, Flutter doesn’t need a separate declarative layout language like XML on Android or a separate builder for visual interfaces because Dart's programmatic and declarative design is easy to read and visualize.
On Android, UI development is usually done using IDE Preview and then repeatedly deployed to the device, making the iteration cycle very slow. Flutter gets rid of this issue by allowing you to compile and run a debug build once and then reload on the fly to see the changes of your user interface almost instantaneously. This makes the process significantly faster and more reliable, as you no longer have to rely on a mock preview where the user interface might look different when implemented on a real
A Great Solution for MVPs
Flutter is not quite mature enough to handle complex mobile applications yet, but it can be a perfect solution for MVPs. Thanks to a shared codebase, the UI and Business logic part of the application could be done by a Flutter developer for both platforms, which cuts the development costs by almost a half. However, if an application requires native Android or iOS functionality (e.g. push notifications, access to sensor or location data), you will need native developers as well. Another bonus is that with a single codebase for both platforms, it also requires fewer resources for quality assurance.
(Minor) Drawbacks of Flutter
- After switching from Kotlin to Dart, it’s like taking a step back - it has either fewer features or the existing ones are not exactly well-refined. But Google’s team is working hard to mitigate that, and we can see Dart getting better with each version.
Finding the needed package is not hard for much older and popular technologies, while for the newer ones it’s comparatively difficult to find a good one. As Flutter is a relatively new technology, its developers’ community is growing, but is not as large as those of Xamarin or React Native. However, it is just a matter of time, as we already see more than 16k useful Flutter packages from verified publishers.
It is still not clear what percentage of applications will be based on Flutter in the future, but the number of such apps is increasing day by day. Flutter has already proven itself to be the best cross-platform mobile application development framework currently available. Hence, as a native Android developer, I vouch that it’s both safe and beneficial for you to take Flutter seriously for cross-platform app development in 2021 and beyond.