Flutter is an application development framework released by Google in 2017 for free and Open Source that allows developers to create native apps for iOS and Android (also in the works for Web and Desktop) using a single code base. Flutter wants to make application development easy, fast, and as productive as possible through features such as Hot reload, huge widget catalog, great performance, and a solid community. In this article, I'm going to list some features of Flutter that make it a framework to consider for your next mobile app development project.
One of the most appreciated features of Flutter and that makes it a perfect framework for developing applications is the ability, following a change in the code, to immediately see the result on the device just as you are used to in web development with the refresh of the Web page. There are no longer the long waits given by the compilation of the code following a modification, but everything happens almost in real-time allowing a considerable saving in development time.
Flutter allows you to develop native applications for Android and iOS starting from a single base and sharing the vast majority of the code between the two systems, such as all the business logic, persistence, and access to resources such as storage and internal database of the app. By customizing the widgets made available, it is possible to have full adherence to the design provided for the application which will be the same on both iOS and Android.
However, Flutter allows you to maintain the peculiarities of the two operating systems making the experience truly native as the typical conventions of the two systems are respected, such as:
- the different physics in the scrolling of the lists on Android and iOS (a more detailed analysis here)
- the style of the switches (custom class in the documentation)
- the transition effects between pages
If used correctly, the widgets made available by Flutter are used automatically and consistently with the system, Android, or iOS, on which the application is launched without the developer having to worry about its actual implementation.
Widget, widget, widget!
This is the mantra of development with Flutter as every component that appears on the screen is a widget, from the simple text field to the list with 1000 lines up to the more complex animation. This allows you to fully customize the appearance of the components on the screen to make them adhere to the graphics that must be implemented. Being a cross-platform framework, Flutter also provides widgets that are specific to a given platform such as the Material Components widgets of Android and the Cupertino (iOS-style) widgets that adhere to the iOS guidelines.
Packages and extensions
The community has made available a site: pub.dev where you can find a huge amount of packages ready to be included within a Flutter application to extend its functionality. The packages range from networking to image editing, from custom components to interfacing with the device hardware, and with a few lines of code, you can import them into your project. To find out about the Flutter packages that you can't know I wrote an article that I recommend you to read: Top 10 packages to use with Flutter.
Applications developed with Flutter are compiled into their respective single platform binaries using visualization engines written in C/C++ which produce fast and performing applications. Applications reach a constant 60 fps on most devices and in some cases even 120fps on devices that support them.
Writing native single-platform applications is hard to beat in terms of performance and smooth rendering, but when it comes to cross-platform frameworks, Flutter has clear advantages over the competition.
Continuous Integration and Continuous Delivery CI/CD
It is possible to integrate Flutter with various services for continuous integration and continuous delivery that allow you to significantly reduce the time for automatic testing of an app and its subsequent publication on the stores. Two of the most used are Codemagic and Fastlane which allow, following the push of the code within your repository to start automatic tests to ensure the correct functioning of your app and subsequent publication of the application within the alpha channel, beta or directly in production on the Android and Apple stores.
Do you have Firebase has a backend? With Flutter it's super easy to integrate Firebase within you app and Flutter and Firebase team made up a website where you can find all the info about it: FlutterFire. You can also read my article: FlutterFire: Firebase and Flutter in Love 💙 where I describe a little bit about the project.
Code Strong, Alberto