Cross-platform mobile development, the Flutter experience

FrostBit Software Lab has followed the development of the Flutter platform (created by Google) with great interest for the last few years. Our laboratory has also actively applied Flutter in various projects to enhance the development of our mobile applications. The need for an efficient cross-platform technology has been great, since producing two separate native mobile applications (Android + iOS) has proven to be too expensive and inefficient for our purposes, whether considering the development or the maintenance phase.

The strength of native mobile applications lies in the possibility of total customization and the native access to the features of the mobile phone (camera, sensors etc.). On the other hand, the weaknesses of the native mobile application approach are the need for a sizable human resource and the maintenance challenges provided by the rapidly evolving mobile phone ecosystems.

Previously our laboratory has created applications by using the PhoneGap –platform, but the limitations it provides to mobile application design proved to be too great for the technical needs of the FrostBit Software Lab.

Google released the first version of Flutter in the year 2017, and it immediately sparked some interest within the developers at FrostBit Software Lab. At that time, we had two sizable mobile projects upcoming in our project calendar, so we bravely decided to try Flutter out in both projects to avoid the challenges that come with the development of two separate native mobile applications.


https://en.m.wikipedia.org/wiki/File:Google-flutter-logo.png

Going towards the year 2021, we are tentatively yet extremely positively surprised and optimistic when it comes the possibilities of using Flutter in creating cross-platform applications. We are certainly going to use it further in upcoming projects as much as we can.  Then again, nothing in this world is perfect, and Flutter also shares its weaknesses, despite all its strengths. For this purpose we have gathered our own experiences on Flutter from the past few years, and here’s our conclusion of what we think of Flutter so far:


Flutter strengths

  • Development is easier when compared to PhoneGap or Xamarin, for example, since Flutter needs less platform-specific code
  • Flutter is cross-platform; it’s possible to develop applications for Android, iOS, Windows, Linux, MacOS, web etc. at the same time
  • It’s fast to develop applications on Flutter
  • Flutter allows the developer to create complex and fully customized UI components, since everything related to layout can be altered
  • Flutter has good documentation and a great number of examples are available. Flutter’s userbase also grows rapidly all the time
  • Flutter is powered by a very performance efficient 2D-UI engine (sky_engine), which works well on a 120Hz display as well
  • Flutter uses the Dart-programming language, which is an easy-to-learn OOP language
  • Google is a huge organization, which has the resources to develop Flutter efficiently. Google also uses Flutter in some of its own products
  • Flutter-code will eventually compile into native application code on different platforms and devices
  • Flutter already has good development tools, for example, for Android Studio and Visual Studio Code
  • Flutter is rapidly being updated

Flutter weaknesses

  • Complex user interfaces can be tedious to develop
  • Since Flutter is updated frequently, a great number of changes are integrated into the platform continuously, which can make large projects difficult
  • Both Dart-language and Flutter are relatively new technologies, because of which they are also rapidly being updated. This problem will fix itself in the future though.
  • Many of the best features of Flutter are still in development stage (null safety, web and desktop application support etc. )
  • If Flutter does not have a plugin for a certain platform specific feature (Android or iOS), you will need to make platform specific code
  • Because of Flutter’s popularity and its relative easiness for application development, there are numerous third party plugins which can have questionable quality
  • Since Flutter is a new technology, so called “best practices” and recommended architectural designs haven’t been really formed or standardized


In conclusion, we think Flutter has way more strengths than weaknesses, most of which are related to the fact that Flutter is still a new technology.

If we also take a look into a few internet articles related to this subject, we can conclude that many other developers in the world have similar thoughts with us (e.g. Rozwadowski 2020;  Costa 2019; Sannacode 2020;  Powalowski 2019). According to these articles, Flutter weaknesses also include the large size of the mobile application as well as certain compromises that are related to the mobile application’s layout and user interface design recommendations of different platforms (e.g. material design on Android or iOS). Here at FrostBit Software Lab, we do not consider these weaknesses to be too problematic in our projects for now, however.

We have used Flutter in two major projects, first being “Arktori” and the other being “DWELL”. In the Arktori project, we are developing a mobile application, with which the rectors of the northern part of Finland can network with each other, as well as enhance their professional knowledge and also mentor each other in their daily work. In the DWELL project, we are developing a mobile application, which promotes and endorses communal living in apartment buildings. The pilot apartment building in DWELL project is the DAS Kelo –student dormitory. We have been quite happy with Flutter in both projects when it comes to mobile application development.


Some screenshots from the Arktori and DWELL mobile applications:

Arktori mobile application (Flutter), development version, December 2020
Arktori mobile application (Flutter), development version, December 2020
DWELL mobile application (Flutter), development version, December 2020
DWELL mobile application (Flutter), development version, December 2020

Flutter has proven to be a powerful tool to create cross-platform mobile applications. However, it remains to be seen, how flexible and efficient Flutter will be in the future when it comes to web and desktop applications. If Flutter will be truly competitive outside mobile applications, it will be a realistic scenario (from the software developer’s point of view) to concentrate mostly on Flutter when developing applications, only to be supported by other technologies in cases, where Flutter is not an optimal approach.

For now, we are not completely certain here at FrostBit if Flutter is the all-powering efficient application development platform for all kinds of applications, but no one can deny that they surely are trying hard to do so!

In any case, we are going to continue watching the development of Flutter with great interest, and are always ready to try out Flutter in new projects and use cases in the future!

 

Tuomas Valtanen

Tuomas works as the web/mobile team leader, a software engineer and a part-time teacher in FrostBit at Lapland UAS. His tasks include project management, project planning as well as software engineering and expertise in web, mobile and AI applications.