A State Of Nervous Excitement
Working as a cog in the IT machine at MegaCorp, I am not mentally stimulated by the day-to-day repetition of building REST APIs as middleware between our customer-facing mobile apps and various backend systems. (Frankly, this is an activity that seems ripe for replacement by AI iff only our team could muster the discipline to adhere to comprehensive and consistent development standards.)
I do not find Java pleasant to work with (and even less so when compelled to do so via the abysmal black box that is Spring Boot) nor do I care for Kubernetes, which is how our APIs run, when deployed to GCP.
I understand Apigee's purpose and admire its intended simplicity for developing API proxies but the way we use it (Apigee Edge, specifically, shoehorning it in to a GitHub repo) is convoluted and error-prone, unfortunately.
This all has motivated me to add an understanding of the mobile app development end of things to my skillset.
In years past, I've dabbled in both Swift (for iOS) and Kotlin (for Android), but ran out of steam and was frustrated by having to implement the same set of features twice, in two different languages, just to make them run on the two major types of mobile devices. When I became aware of Flutter's existence as a framework focused on "building beautiful, natively compiled, multi-platform applications from a single codebase", I was intrigued. Since it came out of Google, I assumed it would be technically sound and because Google still ostensibly pays the salaries of (some of?) those working on it, I figured it was likely to continue improving and not just wither away (like so many other promising open source project do, sadly).
Add to that my strong opinion, born out by my experiences at MegaCorp, that the vast majority of mobile apps do not need the few things you can ONLY get by writing OS-specific code directly, and I see Flutter as an obviously viable solution for companies that want to have apps in both the major app stores without having to maintain two sibling development teams (or, at least, skillsets) while also avoiding the challenges of keeping features in lockstep across two codebases.
As for small software companies and, especially, single developers, who want to build for both iOS and Android, it seems like a no-brainer to at least look into whether Flutter will suit their needs.
With all of this in mind, I set out to build a very simple mobile app that I wanted for my own use and which family and friends have seemed interested in taking for a spin. The development portion of this adventure is a story of its own, which I might delve into at some point in the future. Though, suffice it to say, there are current tutorials (free and paid both [I relied heavily on Kodeco's]) out on the web that do a good job walking you through setting up Flutter on your system, getting you comfortable with enough of the Dart language to get coding, and testing your app on emulators run via Android Studio.
Things got frustrating for me, however, when I embarked on deployment to the app stores, with my ultimate destination being the app running on both a physical iOS device and a physical Android device. No instructions I found seemed to reflect the current (mid-November 2023) requisite steps for deployment.
I did, ultimately, succeed at shipping both the iOS and Android versions of my app, cobbling together, in the process, my own set of steps taken. I compared and contrasted the instructions in the aforementioned Kodeco tutorial with those in Flutter's docs and then felt my way along the path, adjusting course (and re-sequencing as well as ignoring portions of the map[s]) when reality diverged from the prescribed route.
I would be surprised if the deployment steps do not continue to evolve over time, but for now, I am in the process of drafting two subsequent posts, the first detailing how I got my fledgling mobile app to the point where it could be installed and run on iPhones and an iPad (via TestFlight for external testers), and the second spelling out how I did the same for an Android phone (via a Google Play Store release for internal testing).
So, if you happen to be (or are on the fence about becoming) an aspiring Flutter developer, stay tuned. It'd be a shame for the tedium and uncertainty I endured, en route to successfully completing my experiment, to unnecessarily dissuade others from trying out, for themselves, what I consider a very promising tool.