I think a lot of people will compare React (Native) and Flutter in this thread, and as someone who has had a positive experience with Flutter, I will say that by far the biggest benefits were that (a) there's one way to set up a project, dependencies, compile, and run, and (b) it mostly just works across iOS/Android/macOS (and I guess Windows, which I didn't test).
(a) is so, so big. It is a big part of the reason that Rust, a genuinely difficult language, feels inviting. The Flutter community is small, but the core tooling (all from Google of course) is at least consistent. It's obviously how to include packages, it's obvious how to develop, how to run. No need for figuring out Babel or includes or Webpack, or whatever people use these days.
(b) is really nice because it allows you to get started. Yes, it's true that the experience on one platform (web) doesn't seem that good, it's the "new Flash" etc. But for someone wanting to develop high quality desktop apps, this is it, folks. It works. It's not hobbled or just a tech demo, the scaffolding is there. Will you have to write custom components? Maybe. But as a programmer I don't want to think about packaging and compilation and inconsistencies; I want incompatible code to be sandboxed and clear (i.e. filesystem access or sound). The runtime should be the same.
Exactly - I didn't have loads of time to spend writing separate code for Android and iOS, so Flutter helped me ship faster (see my profile).
It was also encouraging to know that if I ever wanted to branch out and deploy my app to the desktop on Windows, MacOS or Linux, that I would have that choice very soon.
And I'm a long-time pure web guy who prefers mobile-responsive web apps most of the time! But if you're going to deploy native and don't have the budget for writing code for every platform, Flutter to me is a lot easier than the other toolkits out there.
(a) is so, so big. It is a big part of the reason that Rust, a genuinely difficult language, feels inviting. The Flutter community is small, but the core tooling (all from Google of course) is at least consistent. It's obviously how to include packages, it's obvious how to develop, how to run. No need for figuring out Babel or includes or Webpack, or whatever people use these days.
(b) is really nice because it allows you to get started. Yes, it's true that the experience on one platform (web) doesn't seem that good, it's the "new Flash" etc. But for someone wanting to develop high quality desktop apps, this is it, folks. It works. It's not hobbled or just a tech demo, the scaffolding is there. Will you have to write custom components? Maybe. But as a programmer I don't want to think about packaging and compilation and inconsistencies; I want incompatible code to be sandboxed and clear (i.e. filesystem access or sound). The runtime should be the same.