In app development we are usually faced with having to expend expensive resources in supporting IOS and Android . Then there is also the Web and desktops like Macs and Windows. The effort to support all of these is prohibitive for most small to mid size development companies. Admitly there is sometimes no choice as one needs to make the app look as good as possible for each of these platforms. However in many cases this need is not the case  and we can live with a good solution for all platforms.  There have been several attempts to fill this need with solutions like Microsoft's Xamarin  , Sencha Touch and React/ Native. Now these are interesting and I have played with the first two but was not convinced they were the best solution. Xamarin only plays in the IOS and Android realms and is dependent on a design tool that  cannot compare to tools like XCode. Sencha and React are  Javascript stories which limits my interest as I am a OO fan. Then along comes Flutter with its very cool Dart  language.  It offers a great solution as its widget based architecture produces great looking  apps like Alibaba's Xianyu app,  which has 50M+ downloads and of course the Google Ads app. I amade a video that shows a few example apps in the Flutter Gallery app.  You can download the source on Github 

At first glance I dismissed it as there is no design tool but you soon come to realize that there little need for one as the Hot Reload  is insanely good! The real beauty is that it produces native code on the target platform. Flutter's engine takes core technologies, Skia, a 2D graphics rendering

 library, and Dart, a VM for a garbage-collected object-oriented language, and hosts them in a shell. Different platforms have different shells,  for example there shells for Android and IOS. The shells implement platform-specific code such as communicating with IMEs (on-screen keyboards)

 and the system's application lifecycle events. The Dart VM implements the normal Dart core libraries, plus an additional library called  dart:ui to provide low-level access to Skia features and the shell. The shells can also communicate directly to Dart code via Platform Channels which bypass the engine. For more details see. The result is a solution that performs well on the target platform. Now it will not win the race against the native app but 60 FPS is not bad and in many case second best is the beat solution. Flutter is Open Source and I like to set breakpoints in the Flutter Code to a get a better understanding of what an operation is doing and to see some really high quality code.

    The Dart language is so easy to learn if you come from the OO world with C# or Java. It is even is easy to learn for Javascript developers  once you wrap your mind around OO and the advantages of it.  I believe Dart is one of the strengths of the Flutter story especially when  it is compared to Javascript which I remind you is a scripting language. I have been programming in C# for as long as I can remember and love DART.

 

The Flutter story excites me as we have a platform that addresses the UX for IOS, Android and the Web (well at least Chrome) and shows promise for Widows, MacOS and Linux. I believe this is great news for small to mid sized development organizations.