Hi, I made a bridge (https://github.com/fzyzcjy/flutter_rust_bridge v2.0.0) between Flutter and Rust, which auto translates syntaxes like arbitrary types, &mut, async, traits, results, closure (callback), lifetimes, etc. The goal is to make a bridge between the two, seamlessly as if working in one single language.
Then, as an example, I showed how to write Rust applications with GUI by utilizing Flutter. That is discussed in the link in details.
To play with it, please visit the GitHub repo, or refer to the end of the article for detailed folders and commands.
When I first released 1.0.0 years ago, it only contained few features compared to today. It is the result of the hard work of contributors and me, and many thanks to all the contributors!
Upgrading from v1 to v2 was not too difficult and v2 is a significant upgrade with lots of useful features, massively improved codegen experience and support for tokio async were the big gamechangers for me.
Writing all the app business logic in Rust and using Dart as the front-end works out really well. I know Flutter/Dart doesn't get much love here on HN but in my opinion I think it's much easier to reason about than a system like React which I think is the wrong level of abstraction compared to Flutter's render the entire widget tree approach.
Massive thanks to @fzyzcjy for all the work on FRB, great job!
[0]: https://saveoursecrets.com
It also still has all the remnants of mobile and fingers and not desktop and mouse. Support for improving this is non-existent in my experience.
Angular came out of Google and hasn't gone anywhere. Also GoLang.. even GWT was supported well past its prime and is now maintained by the community. What evidence is there that they abandon languages and frameworks?
Could you expand on this a bit? My impression was that Flutter and React had relatively similar approaches to components, but I haven't had much experience with Flutter yet, so I'm interested to hear your experiences!
It’s genuinely hard for me to overstate the general quality of life improvements both from the developer experience and the overall quality of the apps I can produce in any given time frame.
A big part of the reason for that is Dart is itself hands down the nicest language I’ve ever worked with. The team behind it got real serious when it comes to tooling and language design and everytime I have to go back to TypeScript I feel like I’m trying to run with a 50kg backpack on.
But it's really the Flutter/Dart API and widgets that make it much easier to work with, if I need to load some data asynchronously I use a `FutureBuilder`, if I need a stream of events I can use `StreamBuilder` etc. Compared to Reacts state, hooks, memo, effects etc. you end up with code that is far easier to reason about what is rendering when and why.
Oh and the real killer feature is Flutters hot reload experience, it's easily the best DX I've seen for GUI work.
As another comment mentioned it really is like night and day. I recommend giving it a try.
Flutter = a UI framework for mobile/desktop/web (Flutter + Dart)
On top of the purpose built nature, nearly everything is a Widget, even layout/styling making it pretty easy to grok very quickly.
Yeah I really like Flutter/Dart. I had less an issue with React itself than I did the whole HTML/CSS/Javascript ecosystem and tooling. Flutter is a breath of fresh air in that it is a purpose built ecosystem for UIs. You load the SDK and are ready to go with features like hot reload out of the box. No need for gamut of tools and to figure out how they all work together. Also, no need for HTML + CSS! I think the only reason it isn't more popular is because we have such a huge # of frontend devs already trained on HTML/CSS/JS, as Flutter is a lot simpler out of the gate, and much easier for traditional GUI paradigm people IMO.
So is the app, subscribed.
The work fzyzcjy and the community have put into calling Rust code from Dart seamlessly is such an asset to Flutter apps. I remade the popular image compression app ImageOptim in Flutter over a weekend because webp wasn't supported. After a little pain in the initial setup, I was able to call mature Rust image libraries using flutter_rust_bridge and a small wrapper[0]. It even handled all the parallelism for me.
The app ended up being more capable and faster than ImageOptim, largely just because of the Rust integration. Thank you fzyzcjy!
[0]: https://github.com/blopker/alic/blob/main/rust/src/api/compr...
Deleted Comment
Tauri currently has poor support for mobile and Linux (because of the state of WebkitGtk).
Flutter uses Dart which is not widely used for anything else. Harder to learn as there is no MDN, w3schools or standard spec for it. Also Flutter Web has issues due to it's use of Canvas over the DOM.
IMO, electron is still the way to go for cross platform apps.
One advantage of combining Rust with Flutter seems to be that Flutter is a whole framework already and one would be able to share code and data structures between server and client side.
A comparison with other ways Rust
You can also do gRPC over Unix domain sockets too if you’re sticking with desktop but overall I really like this approach as it makes it trivial for me to move from desktop app to web app with only some minor config changes.