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 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).