5 Reasons To Choose Flutter for App Development

5 Reasons To Choose Flutter for App Development

Released by Google in 2018, Flutter has quickly and steadily become one of the most popular tools in the app development world. 

During Timothy Jin’s internship at the UBC CIC, he developed two apps using the Flutter framework. Timothy writes, Flutter provided all the necessary capabilities to meet the goals of the projects that I worked on. A wide range of tools and libraries were implemented in the apps to provide features such as the integration of AWS services (Amazon Cognito, AWS Lambda, Amazon S3, AWS AppSync), access to IMU sensors, graphs to display thousands of collected data points, JSON serialization, and custom surveys to collect patient health data. 

With features attracting a wide range of developers from industry professionals to students like myself with cross-platform development support and several compelling features, here are 5 reasons to choose Flutter to develop your next mobile app. 

1. Cross-Platform Support

Perhaps one of the most enticing and well-known features of Flutter is its support for cross-platform development. This is the feature that initially motivated me to learn and utilize Flutter to develop my first mobile apps. Flutter developers can use a single code base to develop applications for six different platforms including Android, iOS, web, Windows, macOS, and Linux. A single code base means that developers can write and maintain just a single body of code with very minimal platform-specific modifications to create an app compatible with all the different platforms Flutter supports. All the code for Flutter apps are written in Dart, an object-oriented and client-optimized programming language also developed by Google. This relatively easy to understand language along with the convenience of a single code base makes Flutter an appealing beginner friendly option for new app developers.

2. Natively Compiling Code

One benefit of the Dart programming language is its ability to natively compile into natively compatible code for each platform that Flutter supports. In the context of Android and iOS, Dart is compiled to ARM or Intel x86-64 instructions that the hardware reads directly. This technique is known as Ahead-of-Time (AOT) compilation. In contrast, other cross-platform frameworks such as React do not compile into native machine code and the code is instead interpreted at runtime. This AOT compilation results in a highly efficient app with a smoother user experience than apps built with runtime interpreted frameworks as there are no resources being dedicated to reading and converting the code into the platform’s native components.

3. Time and Cost

Time and cost are two big factors that are considered when anyone develops anything. Considering the features described above, Flutter is a framework that lets you cut down on both of these factors when developing mobile applications. A big headache for people starting out in app development is spending significant time learning about all the processes, features, and specific features of Android development to create the perfect app and then having to repeat the entire process again in a completely different language trying to mimic the product they’ve just created. The single code base concept of Flutter eliminates this challenge by enabling developers to instead design and develop a single body of code that seamlessly translates into multi platform apps. For larger companies and startups with limited resources, the high efficiency development and performance of Flutter apps makes it an appealing choice and a great way to save time and money.

4. Customization and Flexibility

At the core of every Flutter user interface are widgets. Everything is composed of widgets, which are these highly customizable prebuilt UI elements. Widgets have a wide range of types, features, and functionality. By default, Flutter ships with a variety of useful widgets such as buttons, text boxes, containers, scrollable sheets, and more. Each widget is highly customizable and allows you to change a variety of different properties such as the size, color, shape, behavior, etc. These widgets are nested and connected together to form a widget tree which represents the final app. Tens of thousands of packages containing widgets built by other developers are also available to be incorporated into apps. 

5. Strong and Evolving Community

Flutter has grown to become a stable and credible framework in the app developing world. Backed by Google, Flutter continues to improve everyday and will likely continue this growth and receive long-term support. Being an open source framework, Flutter’s growing community of developers have contributed to over 33,000 packages published on pub.dev, the package manager for the Dart programming language. On top of all the plugins and widgets these packages provide, the Flutter community also provides overwhelming support on platforms such as GitHub and StackOverflow to answer or fix any questions or issues one might run into when using the Flutter framework. 

Flutter Projects at the UBC CIC

Flutter has grown to become a stable and credible framework in the app developing world. Backed by Google, Flutter continues to improve everyday and will likely continue this growth and receive long-term support. Being an open source framework, Flutter’s growing community of developers have contributed to over 33,000 packages published on pub.dev, the package manager for the Dart programming language. On top of all the plugins and widgets these packages provide, the Flutter community also provides overwhelming support on platforms such as GitHub and StackOverflow to answer or fix any questions or issues one might run into when using the Flutter framework. 

Balance Test Mobile App

The Balance Test project was developed to help assess the balance and fall risk of patients recovering from various conditions and injuries affecting mobility. In this project, inertial measurement unit (IMU) data is collected and used to train machine learning (ML) models to aid in clinical predictions of future balance risk probability and patient outcomes. The Flutter mobile app is used to record the data from the device’s IMU sensors as patients perform different movements. The motion_sensors Flutter package is used to access each device’s accelerometer, gyroscope, and magnetometer IMU sensors. This app is also integrated with AWS Amplify to connect with a variety of different AWS Services including Amazon Cognito for authentication and account management, Amazon S3 for data storage, and AWS AppSync to retrieve data and analytics from the backend. Results from the collected data are displayed within the app through line charts, bar graphs, and tables using various Flutter packages

Screenshots of how the Balance Test UI looks on the phone
Figure 3. Some UI of the Balance Test mobile application

Parkinson’s Symptoms Survey App

This project was developed to aid researchers in collecting data on medication wearing-off periods to better predict when a person may feel unwell so they can recommend a personalized medication plan that will minimize patient suffering. The mobile app is used by patients to record medication intake times and symptoms.The survey in this app was developed using the SurveyKit library. This library provides the functionality to convert fully customizable templates in JSON format to surveys within the app. Several other packages are used to provide a variety of features including a passcode lock for the administrators, locally stored survey results, and periodic push notifications to notify patients.   

Screenshots of the Parkinson's app UI on the tablet
Figure 4. Some UI of the Parkinson’s Survey application

Conclusion

In summary, Flutter is a top choice for app development. Its standout features include cross-platform support with the maintenance of just a single code base, efficient native code compilation, highly customizable widgets for a flexible UI design, and a strong community backing. These features work together to create a simple and efficient mobile app development platform that cuts down on both time and cost. With Google’s backing and a thriving package library, Flutter proves to be an intelligent and user-friendly solution that continues to gain traction in the development world.