Although I’ve built several mobile apps previously using web technologies Cordova and Ionic, I was never fully satisfied with the quality of the end products. In most cases, this was because of the un-native ‘look’ of the web based ‘hybrid’ apps. I recall experiencing much frustration using native plugins too.
After my web-mobile experiences, I spent a fair amount of time learning Kotlin. Although I really enjoyed the language itself, I was surprised at how long it would take to build basic functionality like an interactive user interface. I was also concerned that this approach would mean either focussing purely on Android or mastering Swift, the language behind IOS apps as well as building everything twice from the ground up.
As I was using Unity, a cross-platform game engine, for some AR and VR experimentation, I briefly considered this toolkit for general mobile apps too. However, at that time, I was not happy with the UI (user interface) kits available.
I eventually decided to use Google’s cross-platform UI toolkit Flutter for a a project to build an educational app for GCSE students. The toolkit was still relatively new but I appreciated the cross-platform features – one codeset which could build to both native Android and IOS and even web, Mac and soon Windows. The programming language, Dart, which is used for Flutter was easy to adopt; quite similar to Kotlin, which I had been learning previously. Flutter comes with full support for Material design a visual design framework for app UI, so it didn’t have the problems I’d encountered with Unity in that respect.
All in all, my first Flutter experience was highly enjoyable and rewarding. The most striking part was just how fast I could pick up a completely new framework and language and start pushing iterations of my app to my test devices. The hot reload feature which allows developers to see their coded functionality immediately on a physical device really speeds everything up.
After the project was delivered to the client, I took part in a Flutter competition organised by Google, to build a creative clock interface. There was much buzz about this competition on social media and a true sense of developer community surrounding the Flutter eco system.
I went on to build further apps with more and more advanced features, integrations with Google Firebase, Machine Learning as well as take part in the annual Flutter Hackathon, at which I formed a team which got through to the final stages with our Retro CB project.
My latest experiments included an app called AISpy using artificial intelligence (AI) to identify objects aswell as collect data for machine learning training purposes.
There is a highly impressive library of official and community run plugins and modules for Flutter. And, even if I need something new for a project, this would be an opportunity for me to build my own plugin for the community. The area’s in which I have found some limitation, though, are surrounding augmented reality. Particular, the implementation of ARCore Cloud Anchors; so this could prove to be an opportunity for me to work on this functionality, should I require it for my new major project.