Preface

Preface

Table of contents

A little history

I’m developing Line Of Business apps since the late ’90s. I started in DOS with C++. DOS became Windows CE and C# replaced C++ as the programming language.

When it was clear that Windows CE was End-Of-Life, the search started for the next platform. I’ve tried and used the following technologies :

  1. Native Android with Java
    Great platform to use, but not cross-platform.
  2. Native iOS
    Good platform to use, but no ruggedized hardware, not cross-platform and no control over the upgrade of the OS, barely manageable by any EMM/MDM.
  3. Xamarin.Android
    Uses C#, which is great. The developer experience with Xamarin was not so great. Long build times, designing screens with XML is a pain. The toolchain is buggy. Sharing with other platforms is difficult and time-consuming. Very slow build-deploy-test cycle.
  4. Xamarin.iOS
    The same comments on this one as Xamarin.Android, with the addition of an even buggier and slower toolchain when developing on Windows.
  5. Xamarin with MVVM-cross
    This solves the cross-platform problem of Xamarin.Android and Xamarin.iOS. The other problems with Xamarin remain the same.
  6. Xamarin.Forms
    This solves also the cross-platform problem of Xamarin.Android and Xamarin.iOS, but introduces a lot of other issues.

I was not happy with cross-platform development at all. It was slow and felt unprofessional. Until that day in May 2018……

Flutter

Early-2018, I came across Flutter and I was flabbergasted. I saw an approach that I envisioned years earlier.

Why are there tools for creating cross-platform 3D games, but is there no tool to do the same for apps? Isn’t 3D more complex than 2D?

So, in my opinion, Flutter is for apps, what Unreal is for 3D games. A native write once runs anywhere framework with excellent performance.

This doesn’t mean that I did not see any challenges:

  • Convince others that Flutter is great, especially if you consider that in the Dutch language, the word “Flutter” sounds childish and translates to something like “Faulty”.
  • Learn the dart programming language
  • Learn declarative programming

In this blog, I would like to take you on my journey of building a Line Of Business app with Flutter.