Flutter is the Google UI Toolkit that uses Dart to produce apps that run on IOS and Androids. However there is a web version on the way and even desktop. Sounds much like Xamarin but if Google pulls off the Web story then it is much more. I liked Xamarin but was never enamored by the design tool but this is not a problem in Flutter as THERE IS NONE. OMG you must be kidding and at first I thought this was a huge hole but I have since become to realize that you do not need one.
Flutter is declarative. This means that Flutter builds its user interface to reflect the current state of your app:
When the state of your app changes (for example, the user flips a switch in the settings screen), you change the state, and that triggers a redraw of the user interface. There is no imperative changing of the UI itself (like
widget.setText) — you change the state, and the UI rebuilds its widgets from scratch. Now everything in Flutter is a widget like in windows where everything is a window.The rebuilding is fast, real fast especially when u use hot reloading. Hot reload works by injecting updated source code files into the running Dart Virtual Machine (VM). After the VM updates classes with the new versions of fields and functions, the Flutter framework automatically rebuilds the widget tree. Dart VM has two different operation modes a JIT one and an AOT one.
In the JIT mode Dart VM is capable of dynamically loading Dart source, parsing it and compiling it to native machine code on the fly to execute it. This mode is used when you develop your app and provides features such as debugging, hot reload, etc.
In the AOT(ahead of time) mode Dart VM does not support dynamic loading/parsing/compilation of Dart source code. It only supports loading and executing precompiled machine code. However even precompiled machine code still needs VM to execute, because VM provides runtime system which contains garbage collector, various native methods needed for
dart:* libraries to function, runtime type information, dynamic method lookup, etc. This mode is used in your deployed app. for more info
Now there are tons of tutorials on flutter so I will just cover the basics needed to get you started. the goal is a Flutter app that will communicate to a .Net backend that uses c# and Entity Framework. I am throwing in a wrinkle as we will use ASP.Net Identity for our login capabilities. The other nice feature is that flutter is totally Open Source.
Development Environment (IOS)
Flutter will produce native code for its target platforms so this means that we will need a Mac for the IOS version. Apple will only let you develop apps for their platform if you have a Developer account and this cost around 100 dollars/ year. Then you must install Xcode and a slew of other tools that are detailed here. once these tools are installed you can either test your apps on a IOS Simulator or your iPhone itself by just connecting the phone to your Mac. So the bad news for us .Net developers is you need a Mac if you are serious about Flutter. As for in IDE well there is the choice of Visual studio code or Android studio. although I have used VS for years I really like Android Studio and it was my choice.