Can Flutter deliver?

"Flutter has come a long way in a short time. How much of a contender is it today and should you consider it in your mobile strategy." https://www.agsldigital.com/article/blog-post-two-kznhh

Jun 30 Written By Abid Ghani, Co-Founder of AGSL Digital
Since the advent of mobile apps or at least as early as when I first came across Microsofts Xamarin there has been the ideal of a single codebase to meet the requirements of the two major mobile platforms, namely iOS and Android.
I started my mobile development career back in 2009, developing native mobile apps using nothing more than a humble mac mini, Xcode 3.0, Objective-C and an iPod to deploy on to. Since then Apple has come a long way but during the decade where it’s growth has lead to over 1.8 million apps, Apple has never once tried to expand beyond its own devices.
Google has also been on a similar journey, starting out with Java and in time, no doubt to the anguish of many an Android developer introducing Kotlin . Google also didn’t see the need to go beyond its own Operating System into the realm if iOS, preferring instead to develop its PlayStore and give the indie developer a place to experiment more freely than the under the more stringent developer guidelines from Apple.
Until now that is…or at least more accurately until 4th December 2018 when Flutter 1.0 was released with the promise of a single codebase albeit in Dart, a language developed by Google themselves and one not previously on the radar of many developers.
What has Google to gain by it effectively creating apps for the Apple App Store? Well quite a lot as it turns out.
Having developed mobile apps for the past decade and managed teams for both platforms requirements for the features on both platforms have often been identical, especially within retail and media. In these cases, many times rightly or wrongly the Apple platform has taken the lead and Android followed behind often hamstrung by Apple design cues preventing Android developers expressing the personality of their platform.
Sure, there have been other Cross-Platform solutions, React Native comes to mind and the aforementioned Xamarin but the former is an open sourced and not supported by Apple or Android and the latter is championed by a failed entrant into the mobile space namely Microsoft who as refined as there platform now is, has suffered from years of playing catchup and will forever be held in a special place by only the .net diehards.
Whats different about Flutter? For one its owned by a major player that has access direct to the heart of its own eco-system and OS, secondly they’ve actually not done a bad job of it.
It took some coaxing by the Global Head of Delivery at a recent assignment of mine to sit down and take a real deep dive into Flutter and I was pleasantly surprised by the level of documentation, tooling and general support available from Google.
Yes, you have to download and get to grips with Android Studio and yes you have to learn Dart and yes you have to still use Xcode to deploy to the Apple App Store or a physical device but actually its all rather painless at least as painless as a relatively new platform could be. Dart is no Swift, it can be unwieldy and the brackets, semi-colons and indents are frustrating to deal with as well as it being a language that feels somewhere between Java and Javascript. Android studio is decent enough but takes time to locate features hidden behind oddly designed icons in endless sidebars and tabs.
But at the end of it all, it does work. Basic apps that generally fulfil the needs of many businesses run as fast on iOS as Android at 60fps and there is genuinely one codebase.
If Google can get enough of the developer community to start building Flutter apps and the business community start seeing the cost savings of a single codebase then it could mean a sea change in the world of mobile app development, given that for now it seems the majority of early Flutter adopters are Android developers, Android powered Flutter apps will take the lead and iOS versions will follow.
There are issues to overcome such as authentic platform look and feel, Google has adopted material design for its Flutter platform and has had the foresight to provide a Cupertino package that allows for iOS apps powered by Flutter to leverage their own native design language.
Back in 2012, I wrote a similar article where I drew an analogy of cross platform technologies with electric cars vs petrol cars and how on paper it was all a great idea but they weren’t quite there with there range and infrastructure, then promptly in the same year Tesla launched the Model S, which went on to become the car of the year 2013.
Flutter 1.17 was released in May 2020 and it looks to have all the hallmarks to blow away all the traditional native app development arguments in the same way as Tesla did with the internal combustion engine. This is not to say there won’t be a place for traditional native development there are still many specialist apps that require API’s and libraries that are best accessed on a native platform directly, however for many business as usual apps Flutter is a good option and one that should be considered a serious contender not least by Apple.