Excuse the language… 😉
Coming from a strong Android development background and dabbling in early iOS using C# and more recently getting familiar with Swift. I decided to research the maturity of some cross-platform solutions earlier this year, such as Apache Cordova, React Native and Xamarin — even tinkering with each one and building a typical ‘Hello World’ app — during this process I stumbled upon the word ‘Flutter‘.
I immediately jumped on Google and found myself at flutter.io … This looked very interesting! and really cool concepts!
Since that day I kept my eyes peeled on the development of Flutter, watching it transition from beta to stable 1.0!
Flutter is Google’s latest mobile SDK for primarily crafting beautiful high quality native apps on iOS and Android from a single codebase, and also with the possibility of desktop and web too!
Under the bonnet Flutter utilises the Dart language (also originally developed by Google) for coding the app’s UI and a heavily optimised version of Skia (an open source 2D rendering engine) for drawing the UI. Any developer who is familiar with C++, C# or Java will be able to pick up Dart easily in a few days!
- Widgets is the first thing you learn about Flutter, everything is a Widget — it is the basic building block of the app’s user interface — you basically nest Widgets to build out your UI. Widgets are reactive by design, any changes made to a widget’s constructor are automatically propagated to lower-level widgets as changes, and vice versa.
- Hot reload is one of the big draw cards for myself personally. This allows you to see your changes on the emulator or real device instantaneously. This is facilitated by the Dart Virtual Machine (VM) which operates in JIT (just-in-time) mode when running debug builds — essentially it injects the updated source code into the VM and existing state is combined with the new code.
- Material and Cupertino widgets for native behaviour and feel! Out-of-the-box these widgets have been pre-built by the Flutter developers and designed to follow Material and Cupertino style guidelines, so you can get a native look/feel of text, input fields, navigation, etc without too much effort.
- Fast 60fps with smooth jank-free animations and native performance. This is facilitated by the Dart VM which operates in AOT (ahead of time) mode when you build your app in release mode. In release mode your app’s source code is precompiled into machine code.
Coming up next…
I have recently had the opportunity to start diving into Flutter and I’m very excited with the future possibilities this framework has to offer! Keep an eye on this blog as I continue to share my Flutter journey!
- Getting started with Flutter
- My top Flutter’n tips
- First Flutter app using SQLite database
- Navigation and page routes
- Platform aware widgets and utility class
- What is BLoC?
- Jenkins Continuous Integration (CI)