Hello and welcome to this series about Flutter!

I have been developing Android and iOS applications for nearly a decade, and I am currently Lead Mobile Developer at Intent Technologies.

When we started our application back in 2017, we needed to distribute it on both Android and iOS. We immediately chose to look for a cross-platform solution, because we had limited time and developers (namely just me). At the time the most popular cross-platform framework was React Native, but I was not happy with its web-like language and JavaScript bridge. And Flutter was just in alpha, so I went with Multi-OS Engine.

Put simply, MOE is a bridge between Java and Objective-C, which allowed me to share a common Kotlin module with both the Android and iOS apps, and write the iOS app in Kotlin too. However, it has major drawbacks:

  • compatibility with Swift is not trivial
  • documentation is insufficient
  • community is quite small
  • it is not really maintained anymore, so the gap with the latest iOS versions is more and more important

So after three years of good and loyal service, we decided to say goodbye to MOE and look for another solution. We gave Kotlin Multiplatform a try but unfortunately it still has some flaws, thus we decided to take a radically new approach and go with Flutter!

Bye bye MOE, hello Flutter!

So this series is about my journey to Flutter. I will cover topics that are not straightforward and pretty different from what I know from native Android or iOS, such as architecture or automatization. I hope they will benefit to other Flutter developers, beginners or not.

Stay tuned.

--

--