Amazon.co.uk Widgets

Flutter

Flutter is an open-source software development kit created by Google. It is primarily used to develop cross platform applications from a single code base for Android and iOS. It also supports Linux, Mac, Windows, Fuchsia and the web.

At the launch in December 2018, at the Science Museum in London, I could already see that Flutter had a lot of potential and I became an early adopter. That potential is now a reality in the fast effective production of quality apps for Android and iOS. We have over 30 apps in production on the App Store and Google Play now based on Flutter and developed by a talented team of professional developers.

Adobe XD plugin for Flutter

The image above shows a mockup I created with Adobe XD. I created it in early 2020 and directly exported to a Flutter based project in Android Studio, then ran directly on iOS. This looked like a holy grail for people like me, to be able to create user interfaces in a straightforward tool, and have them 'just work' in the development environment.

It turns our that the Adobe XD plugin for Flutter trumpeted by Adobe and Google at Flutter events is actually developed by a third party under contract to Adobe and does not have the full resources of Adobe behind it. It went through something of a hiatus in 2020 and early 2021 but is under development again. It relies on SVG support which is not native to Flutter, so unfortunately to me as a user of Adobe XD, it can't really be considered for production use in a devops style environment. It still has a long way to go before it is good enough but I wish it well and would like it to 'just work'. Looking at the image below there is a lot of work to do here before it can really be properly used in an app. The resulting code too is impenetrable and proprietary.

XD preview compared to generated code running on a device
XD preview compared to generated code running on a device - not ready for prime time

The fact that a User Interface (UI) can be created in a design tool, utilising the assets and resources in the development project, is remarkable. But the resulting code producted by Adobe XD has too many limitations for me to seriously consider it as a production tool at the moment.

FlutterFlow

FlutterFlow designer screenshot
FlutterFlow designer screenshot

FlutterFlow is the real deal, it seems. I'd recommend looking at FlutterFlow. It exports Flutter source code that is neat, and editable, into your devops platform via GitHub. It is easy to use. It is quite possible to publish an app created entirely in FlutterFlow or for a product manager like me to create 'most' of an app and leave the hard wiring up to a professional developer. You can read more about my experiments with FlutterFlow on this website.

Why Flutter?

I have been working on mobile applications for over twenty years: starting with the original Nokia Communicators (SyncML - remember that!); through the Symbian episode with Nokia Series 60; and Sony Ericsson with UIQ. 

I even did some work on automated test tools for Symbian, Windows Mobile, Qualcomm Brew, and early Blackberry devices. More recently, I have managed the development of apps for Blackberry 10, Apple iOS and Google Android. Consequently, I have always had a keen interest in cross-platform development tools.

There is no room in small budget projects, or in startups, for a gigantic development team full of language and platform zealots. Cross platform developers tend to have an enlightened viewpoint, coupled with experience of the broad collection of front and back-end development tools, as well as platforms and technologies required to bring an app to success. I prefer working like that.

The trouble is, cross platform has often meant compromise. Often one platform is considered superior to another, making it necessary to simplify your app to the lowest common denominator. Platform capabilities can be muted due to technical or pragmatic limitations in the cross platform toolchain.

Flutter is not perfect by any means and it is too is early to claim that in its development life-cycle. However, it is solving these cross-platform problems in an innovative way which has a lot of potential in the near term and a fabulous possible future relevance.

I have decided to use it in all current and future projects. Last time I made such a bet was in 2012. So this, for me, is likely a ten year timeframe.

For a client, we have already built and released several Flutter based apps with tens of thousands of users. Porting that app to Dart and Flutter from JavaScript and an obscure cross platform framework at the end of its development life-cycle was a technical debt, that took several months, but now our new feature development is quicker and easier.

Using Flutter after using other tools to create mobile apps is like giving Blu-Ray Disk technology to someone with a VHS video recorder.


“Flutter and the related logo are trademarks of Google LLC. I am not endorsed by or affiliated with Google LLC.”

Note An earlier version of this article was originally published on my LinkedIn.