It has been a while for me to get excited about a language. PHP was the first language I learned, but I wasn't excited about it. It wasn't until I discovered PHP 5 and OOP that I felt an epiphany! C++ and Java really take the cake for amazing languages. Most recent has been NodeJS with async await! A new contender has come on to the field!
Flutter, a cross platform framework built on the Dart language. It is used to build iOS and Android apps! Usually, when I see this cross platform claim, I say it is too good to be true, but I looked at the architecture of the framework and I like how easy it is to define UI components and styles, that I can't resist trying this!
You can read about why Flutter used Dart (https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf) to gain some reasoning behind their choice.
I remember Cordova, which I think was ok for some apps, but generally crappy looking and because of that you could tell the difference between a native and Cordova app. I think because I had a crappy experience with Cordova that the idea of compiling to JS put me off. There is React Native, which is promising, but relies on compiling down to javascript, so... you ain't getting native performance and will be ripe with JS bugs. Not to dig at JS, but I don't trust it enough for native-like mobile apps. I think it is best suited to the browser where I can tolerate it!
I digress, so back to Flutter. I was expecting some weird looking language, but when I saw "new" and annotations thats when I said "looks like Java," so immediate embrace of it. I like how easy it is to do a main function. Don't need any special setup to get a main function going, so it feels like starting from a blank clean slate.
Once you get into it, I think, then you just start writing mobile apps without a UI builder! That is crazy talk. Runs on both iOS and Android with hot reloading! Holy crap that reloading (https://youtu.be/hhP1tE-IHos?t=122) is amazing! I wish that kind of quality stuff was brought down into the web world. Hot reloading in web kinda sucks right now.
Anyway a light technical overview, Widgets are Flutter's name for components. State is returned by a Widget. Widgets have children, which defines the hierarchy. Widgets are implemented as Stateful or Stateless. Stateless is a stateful widget that returns stateless state hah! State describes how the UI should look as well as keeping data structures for the app. I believe that light technical overview is all you need to know to get started creating Flutter based apps! There are better resources out there that will get one up to speed.
Note: You can still write Java/Kotlin or Obj-c/Swift to handle edge cases, which is perfect. This helps with the last mile perf/compatibility use cases.
Flutter looks amazing syntax wise. I think it is a force multiplier and I will use it for my next iOS and Android projects, so I don't have to maintain two codebases.
Try your hand at reading Flutter from Zero to Comfortable (https://medium.com/@DakshHub/flutter-from-zero-to-comfortable-6b1d6b2d20e).