My capstone project is “Development of an Evacuation Drill App”, and a technology we need is a mobile framework. Our choice of framework was mostly made for us, as two of our three members learned Flutter in CS 492 over the summer.
Flutter attempts to deliver on the promise of “code once, deploy everywhere”. From a single code base Flutter can compile apps for both iOS and Android, along with Windows, macOS, and the web.
However, like many of its predecesors it only accomplishes this to a high degree – not completely. For some specific features native code must be implemented after compilation. But for the general architecture of a mobile (and now desktop or web) application, Flutter can be the primary framework.
Why we chose Flutter over alternatives
Flutter was a clear choice for our project based on group familiarity.
It was a much better choice than developing our application twice, once for iOS and again for Android, and better fulfilled the project requirements by not choosing to develop for only one ecosystem.
Flutter also makes claims to being faster on both mobile operating systems. These claims are mostly true, but the end-user experience does not seem to be reasonably diminished when using React Native, so in my opinion it is not a strong reason to choose Flutter over React Native. I agree more with the sentiment that if performance is primary concern for a project, true native code should be the focus of development.
A peripheral concern which Flutter resolves is a stretch goal for our project – to develop a desktop application to aggregate data from multiple instances of our mobile application. Flutter is now equiped to compile to desktop applications for both Windows and macOS. While it would not be a great choice if this was the main focus of a project, being able to reuse our code-base with minor tweaks to create a new desktop application brings this stretch goal closer to realization.
How we will use Flutter in our project
Flutter will be the framework we implement to develop our mobile application for both iOS and Android. We will use a basic flutter project as our starting point for development by running
We will leverage many of the open source packages available for Flutter and it’s underlying language Dart by using the
Finally, when it comes time to test or publish our application we will compile it for iOS and Android using flutter.