With New Windows Desktop Support, Flutter Throws a Dart at .NET MAUI
Google's open source development framework (and bespoke programming language Dart) was often featured in comparisons with Microsoft's Xamarin mobile app platform.
The comparisons were kind of a toss-up.
Then came .NET MAUI, described as the evolution of Xamarin because it added desktop app support, giving the edge to Microsoft for many in the battle of cross-platform development frameworks, both still primarily focused on mobile.
But .NET MAUI "slipped the schedule," missing the .NET 6 launch date in November. Now it's still in preview.
Then, last week, a Flutter update added Windows desktop support. It's game on again!
So what do developers making a choice have to say now?
"Go with Flutter for now," says "t_go_rust_flutter," whose handle obviously reflects some Flutter bias. That advice came in a Reddit thread in the r/dotnet section of the tech-oriented social site. Posted seven days before this writing, the thread is titled "Will learning Xamarin in 2022 be of any point till comprehensive .NET MAUI study material is curated?"
Granted, the post came from a college student, not a professional developer, but it sheds light on the issue. Here's the body of the original post (no editing):
"I'm a college student who's just getting into the .NET world. I have a proper understanding of c# and am very keen on application development. However, I am unable to decide what to commit to. MAUI is obviously the way forward but has little to no resources and is still very young. I am inclined towards getting to know the ins and outs of Xamarin to get an edge in MAUI development in the future, but needed the opinions of anyone who knows better than me."
Here's the full answer from t_go_rust_flutter:
"Going by the history of Microsoft on the desktop and mobile, MAUI is probably still a couple of years away from being manure enough. And it'll still be that monstrosity that is XAML. Go with Flutter for now."
(We'll give benefit of the doubt that "manure" was a typo of "mature," but that's a very attitudinal typo!)
Here are the other unedited answers, in order of publication:
- I think you'll do a smart thing starting with xamarin now to prepare for maui, after all maui will be the evolution of xamarin, and currently maui is in no way suited to create a prod app with. It's what i am doing btw, have some apps accompanying a main application.
- 2nd this. Tried to build an app with MAUI and it is long ways until it's ready. I now use Flutter/Dart because I don't like XML much and wanted to use MVU pattern.
- The best thing to do now, would be to learn Xamarin Forms in preparation for MAUI. There's enough overlap there to justify spending time in Xamarin first.
- Xamarin Forms and Maui will still be xamarin. Same native API calls just a different UI layer. Learning Xamarin Forms should be a relatively easy cross over as Maui matures.
Both Flutter and .NET MAUI were also mentioned in another Reddit thread posted a few days ago titled "Desktop development in 2022?" The poster was focused on Windows but said cross-platform would be nice.
That discussion featured many laudatory comments about Flutter but only a couple mentions of .NET MAUI:
- I'm interested to see how .NET MAUI is gonna be received and how it'll perform on the cross platform side of things.
- Off the top of my head: C# Maui (although no Linux support), Flutter, or TypeScript on Electron.
One comment mentioned Flutter with Microsoft's open source code editor, Visual Studio Code:
I highly recommend Visual Studio Code (an open-source all-platform editor, not to be confused with Visual Studio) with the Dart and Flutter extensions - you can just jump in and start writing Dart apps for the command line, then take a look at Flutter to see how the UI side looks. Dart code compiles to reasonably small executable file on every platform, with two limitations off the top of my head: I don't think you can compile for a different platform than the one you're using (there are CI/CD tools that can do this automatically, like GitHub), and I have no idea how Flutter fits into that process yet because desktop app support is relatively new.
Other suggestions included Qt, React Native and Kotlin with SWT or Swing.
Both Flutter and .NET MAUI were also mentioned in a recent community forum post on the OSArch Community site, titled "Cross-Platform Desktop App Development Framework Selection" about making the IFC Toolbox app a cross-platform app for the long term. Core factors in the decision were: performance; offline capability (at lease could be serverless); desktop platform compatibility (Win10/11, MacOS, Linux); and consistency in UX.
The post included this benchmark of choices:
A comment just posted Monday focused on the languages used by the respective offerings.
Thanks for sharing @Moult . I agree with your point of view, if we speak according to the language, I think they can be divided into three categories. C/C++ based (Qt), JS based (React Native, Electron, Ionic), C# based (Xamarin, Uno Planform, MAUI).
The problem with C/C++ is that it's too complicated for the most people. And it's hard to get started, and contributors are hard to involved. C# actually has a similar problem. Compared with JS projects, those community grows very slowly, and the contributors are not very active.
What you said about "out of place" for JS approach, I feel the same. It's always kind of too web page look. The good thing is that you can build the same UI logic across platforms. But for a desktop app, is there really a need to build a unified cross-platform experience, or is it more for a native experience?
"As a user, what kind of cross-platform desktop application UIUX do you prefer?"
This is also the question I want to ask. Please give me a quick feedback if you can. Thanks, everyone!
Unified interface everywhere - LOL 😂
Native-like interface in each - WTF 😯
For those wanting nuts-and-bolts details about the competing offerings, the LibHunt site has published "Introducing .NET Multi-platform App UI (MAUI) VS Flutter" to "see what are their differences." Part of the comparison is shown in thus graphic:
It also features the official descriptions of the two offerings: ".NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop," and "Flutter makes it easy and fast to build beautiful apps for mobile and beyond." The site also includes snippets from various posts and articles about each platform.
With the Flutter support for building Windows desktop apps just barely a week old, more comparisons are probably in the works. In fact, coming up next week is a virtual Meetup titled "Getting started with .NET MAUI (Hey Flutter and RN, better watch out)."
The Meetup might not directly compare Flutter and .NET MAUI, but it's included here solely because the notice includes a bar joke featuring React Native, Flutter and .NET MAUI, possibly the only one of its kind (it will be left to the reader to judge the humor quotient):
RN, Flutter and Maui went to an nyc bar.
Flutter: "Hey I can make apps even for Mac OS"
React Native: "I have a special react native web to support browsers"
.NET MAUI: "I may still be in preview, but I can make native apps on Android, iOS, Windows and Mac OS. How's that for a challenge?"
Flutter: "I am fast"
.NET MAUI: "I can load web assemblies(WASM)"
RN: "Buy dis maui a shot".
(So what do Visual Studio Magazine readers think about Flutter vs. .NET MAUI nowadays? Please share your thoughts in the comments section.)
About the Author
David Ramel is an editor and writer for Converge360.