Shaquil Maria: "Redefining App Development"

18 August, 2023

Hi there, My name is Shaquil Maria, I am a software developer at Ictual, focusing on frontend and mobile app development. While finishing my last projects at the university, we had to create various applications, one of which was an application that had both a web and a mobile interface. The first thing you think is to create each one separately, but as the deadline crept in I realized it was time to build something cross-platform, where with one codebase you can deploy your application to both the web and mobile (android and iOS). 

That was my first encounter with Flutter, a Google User Interface framework. Flutter is written in the Dart programming language, a type-safe language with similar syntax to JavaScript and Java, also developed by Google. With Flutter, you are able to create a User Interface(UI) for different platforms by maintaining and deploying one codebase. Currently, Flutter supports Android, iOS, Web, Desktops (macOS, Windows, Linux), and embedded systems. 

This means that where you need a UI, you can use Flutter. Flutter compiles your code into native code for your platform, meaning that your application runs smoothly on the device. 

Here at Ictual we have been experimenting and deploying Flutter applications for the last two years. We mainly use it for mobile development, where we need to make applications for both Android and iOS, but we have also experimented with Flutter for Web. Throughout our experiments, these are the pros and cons we have noticed so far: 

Pros: 

  • Single codebase, Multiple Platforms. One of the difficulties we had before in mobile development was developing the same design for both Android and iOS. We always had that one had a feature or improvement implemented before the other. Flutter allowed us to develop features once and deploy the application on both platforms; without the need to write custom code for a specific feature on a specific platform.
  • Hot Reload. When developing Android applications, you have to build (restart) the app each time you want to see the changes you’ve made. Flutter has the feature of Hot-reloading, which means you can see changes immediately without the need to restart the application for each change. This increases your development productivity by a lot in the course of developing an application.
  • Ready-to-use Widgets. Since Flutter was developed by Google, you get out-of-the-box widgets (components such as buttons, toolbars, icons, etc) that you can use in your application without the need to create a new style or theme for your application. Just as easy, you can create new widgets for your application with your own custom styling based on the wide range of applications that Flutter provides. 

Cons: 

  • Learning curve. While Flutter allows you to easily navigate the code and develop applications quickly, it can take some time to get used to the widget tree concept of the framework. Besides that, Flutter is written in Dart, meaning you would need to learn a new programming language to be able to develop Flutter applications.
  • Platform Limitations. Flutter aims to provide a consistent experience across the different platforms it supports, but some of them are still in early development, meaning that you might have some inconsistencies in behavior on certain platforms. The Flutter team is always working on and deploying new versions with bug fixes and improvements to address these inconsistencies. Besides that, there are always some platform-specific limitations or differences that you, as the developer, would need to address with a bit of native development. However, for us, this was not the case yet.
  • Native Features Integration. While Flutter supports most native features of the platforms they support, there could be new native features that are not yet implemented in Flutter, meaning that if you want to use them you will have to create those implementations of your app in the native code of the platform. Other features such as Push Notifications are also part of this issue, but you do not have to develop anything to make them work, just set them up specifically for your different platforms (in our case: Android and iOS). 

All in all, Flutter is a powerful and versatile framework that allows you to decrease the development time of cross-platform applications. With Flutter, the sky is the limit. You can create simple applications for complex portals and also have them be cross-platform. 

Here at Ictual, we are always experimenting and looking for new ways to streamline our applications’ development, and Flutter is certainly one of the tools that allow us to become more efficient and effective. 

Thank you for reading!

Back to overview