Skip to main content

Ordina adopts Flutter as a serious alternative to native development

The relatively young mobile framework Flutter, which is based on the Dart programming language, is rapidly gaining prominence in the world of mobile app development. In the Netherlands, Ordina applies the open-source solution developed by Google in various projects, including those in the financial services sector. Additionally, several other major companies have enthusiastically adopted Flutter's capabilities, particularly for mobile app development. This includes industry leaders such as Ahold, BMW, Philips, iRobot, eBay, and Toyota.

Many companies grapple with choosing the right technology when developing their own mobile app. Promises made by traditional cross-platform solutions are not always ideal, low-code solutions come with limitations, and going fully native is costly and time-consuming.

"The advantage of low-code is the ability to develop quickly without the need for specific expertise, but there is also an intermediary layer responsible for translating to the native platform," says Remi Appels, software architect at Ordina. "Since this layer needs to be built, in this case by the low-code platform, you quickly encounter limitations. Our clients find that while some features can be rapidly implemented, other straightforward functionalities are often not yet available. So it really depends on your actual use-case if a low code/ traditional cross-platform solution will meet your requirement. In some cases, your ambitions and certain limitations will nudge you to adopt Flutter. "

Only one opportunity to build a 'killing app'

Smartphone users expect a 'native' experience when it comes to a mobile app. "Everything should run smoothly," says Rogier van Apeldoorn, lead developer on one of Ordina's mobile projects. "This includes interaction patterns that must align with the respective operating system and the conveniences of the mobile device that you need to support, such as accessibility features, fingerprint scanners, and cameras," adds Remi. He anticipates that companies will increasingly focus on mobile apps for consumers in the near future. "Ninety percent of mobile usage occurs within apps. Therefore, it's essential to cater to app development. However, there are already so many apps on a phone, and you really have to earn your spot. As an app provider, you only get one chance, which is why your app needs to be right from the start. When you consider the best solution for this, Flutter quickly emerges. It allows you to build a native experience for both iOS and Android, all from a shared codebase."

Why is Flutter fundamentally different from other cross-platform solutions like .NET MAUI, React Native, and Cordova? "React Native actually works much like .NET MAUI, as it translates to native UI elements," says Remi. "Cordova uses a webview with HTML elements, which is not the same as native. Moreover, it lacks many interaction patterns that Flutter provides. Often, it's about the details, but it's those very details that determine the success of an app." What sets Flutter apart, especially, is its approach. "Every other cross-platform solution translates to native components, but this often results in the worst compromise. If a particular component isn't available for iOS, offering it for Android is also impossible without extensive customization. With Flutter, we don't have these limitations, and theoretically, you can build any imaginable UI. What's also great is that you can easily incorporate the OS's characteristics into the app, so that an iOS user feels like they're using a native iOS app, and an Android user has a native Android app."

More cost effective than a native solution

Building a native app can be costly because you need to develop it twice. Additionally, acquiring the necessary resources for native app development can be a challenge. Rogier explains, "Flutter is a rendering engine based on Skia, using Dart as the programming language. With Flutter, your only limitation is your own imagination. What's fantastic about Flutter is that you're not just building an app for Android and iOS; it's also possible to create Windows, MacOS, Linux, Web, and even embedded applications." To avoid building everything from scratch, you can make use of packages. Rogier elaborates, "Packages are essentially plugins that you can utilize to avoid building everything yourself."

Flutter makes use of a MethodChannel. "In essence, this is the communication layer through which you can access platform native functions of the device, such as the camera. These platform functions are actually executed natively by the platform, and you can call them from the Flutter framework. Many platform functions are already available through packages, but sometimes you need to build them yourself."

So, it's not the case that you don't need any native knowledge at all. "We have applied Flutter in various enterprise projects where sensitive data is processed through the apps. These apps must, of course, be very secure, and for security features, we can occasionally dip into native security features. Particularly for the app's UI elements, native knowledge is not necessary."

The user-friendliness of Flutter also allows developers who are not yet familiar with Flutter and Dart to quickly integrate into a project team. Remi mentions, "We've successfully added various experienced front-end developers (without Flutter knowledge) to customer teams. They have developed into full-fledged mobile developers in a short period."

Strong support from the Flutter community

Working with Flutter is a lot of fun, according to Rogier. "There's a lot of humor and enthusiasm within the Flutter community. The community also provides excellent support. For instance, I have a colleague who is relatively inexperienced with Flutter and works late into the evening. He uses a Slack group where he can ask his questions and get immediate answers, allowing him to make quick progress, even when his immediate colleagues are not working."

This enthusiasm is catching on, observes Rogier: "Over the past two years, we've hosted the Flutter Festival at Ordina, with various presentations and lightning talks. For these meet-ups, we typically had around a hundred Flutter enthusiasts attending, which is quite rare for a meet-up. When we post a job vacancy for a role involving Flutter, we consistently receive a high number of responses. I get the impression that Dutch developers are very eager to embrace this in their work."

Regarding the actual work itself, building with Flutter is a highly pleasant experience. Rogier says, "I've been working as a developer for 25 years and started as a Java developer. I later shifted my focus more toward front-end and then mobile development because that's where you can really see the results of your work. To give an example with Flutter: with stateful hot reload, you can address any errors instantly, without the need to recompile the code repeatedly to check if it went well. This applies to minor adjustments, such as colors and margins, but even a change in the code can be verified on a device or simulator without recompilation. What's even more impressive is that the app's state remains unchanged. This way of working is a significant advancement, making app development simply enjoyable."

Encouragement of component reuse

"With Flutter, you learn one language, which is Dart. 'With Dart, we can build both the UI and the logic,' says Remi. 'We construct the UI using widgets, and by combining widgets, we can create an interface. However, combining widgets often leads to less readable files with extensive widget trees. Particularly in large development teams, it's important to bring structure to this. We use the atomic design philosophy for this purpose. This philosophy promotes widget reusability and collaboration, as pages are constructed from templates, and templates are filled with organisms. This process continues down to the atoms. This way, the pages remain organized and easy to manage.'"

Thanks to a white-label setup, Ordina can build various applications from a single codebase. "Our approach goes beyond merely applying different themes; it also involves configuration and the use of different UI components," says Rogier. "We've established a framework that allows us to genuinely create different apps from a single Flutter project through configuration. In this process, we override parts of the main project with label-specific projects. Google is also showing interest in our approach. We are currently working on a showcase of our methodology, which is, of course, super exciting. Additionally, we are already on Google's list of preferred suppliers in the Netherlands."

The knowledge gained in Flutter projects is part of Ordina's mobile app starter, which is aimed at accelerating mobile app development for customers. "Think of the development lifecycle and the application of standard architecture and documentation," says Remi. "Within Ordina's competence center for mobile app development, Flutter has already found its place, as well as in the Accelerator program that allows developers to progress from junior to mid-level and senior roles. For this group, Flutter is intriguing. Proficiency in Flutter not only leads to exciting projects where you see immediate results, but it's also a young technology that is already the most popular mobile cross-platform development solution." Rogier adds, "Flutter engineers at Google want to expand Flutter so that it won't just run on your mobile phone but on anything that displays pixels, from TVs to cars. Flutter will soon be everywhere."

Discover the benefits of Flutter for mobile app development. Get in touch!


Remi Appels

Solution Lead Mobile