跨平台UI框架之战:Flutter的优势与亮点

发表时间: 2024-07-22 08:51

一.桌面端跨平台的问题
其实,说真的,虽然本文的标题是要讨论“跨平台UI框架”的选型。但我个人认为就“桌面UI”而言,UI跨平台本身是个伪需求。呵呵。

下面说说原因:
一般来讲,如果是用于工作,绝大多数情况下做桌面UI都是为了驱动工业设备。
市面上纯软件方向的桌面程序开发工作,除了金蝶、用友、泛微、天正、超图等少数特定行业的“小巨人”之外,就只剩杀毒软件、电脑管家、QQ微信、字典词霸了。

况且无论那些“行业小巨人”,还是杀毒软件、电脑管家啥的,目前的情况下,都根本不可能换UI框架。

所以如果不是为了驱动工业设备,那不如直接做WEB,好歹不至于喝西北风,同时所谓的跨平台问题也就不存在了!?


二.MAUI、Avalonia、Flutter知识扫盲

  • MAUI (Multi-platform App UI): MAUI 是微软为 C# 开发者提供的一种跨平台应用开发框架。通过 MAUI,开发者可以使用 C# 和 .NET 来开发适用于 iOS、Android 和 macOS 等平台的应用程序。

  • Avalonia UI: Avalonia 是一个开源的、跨平台的、使用 C# 编写的 UI 工具包。它可以运行在 Windows、macOS、Linux、iOS 和 Android 等平台上。Avalonia 的目标是提供一个类似于 WinForms 的开发体验,同时支持现代的 UI 特性。

  • Flutter:它是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。


三.移动端跨平台问题

1.MAUI(推荐指数:3颗星)
MAUI优点:
(1)使用 MAUI,开发者可以快速构建高质量的移动和桌面应用程序。由于 MAUI 是基于 .NET 的,因此可以利用现有的 .NET 生态系统中的大量库和工具。
(2)MAUI 不是一个人在战斗,MAUI + blazor hybrid 这个可能会是 MAUI的跨平台主流使用方式。

MAUI缺点:
(1)微软没有长期大量开发iOS和Android应用的经验,MAUI技术的出现又优点脱离传统Windows开发群体,感觉几边都不搭。它会活的久么?
(2)它不同平台的差异太大了。曾经做了一个app在windows下和安卓下处理过后正常运行 到mac/ipad下直接嗝屁。

总结:跨多平台上问题还很多,目前只比较适合作IOS与Android的UI,只推荐MAUI + blazor hybrid的开发模式。

2.Avalonia(推荐指数:5颗星)
Avalonia优点:
(1)Avalonia 使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码,并在不同的目标平台上保持统一的外观和感觉。
(2)Avalonia不依赖于本地UI控件,而是类似于Flutter,绘制整个UI。这不仅确保了在所有平台上的一致外观和体验,还提供了无与伦比的自定义水平,使您能够根据实际需求定制UI。
(3)我们已经用Avalonia做过几个成熟项目了,最新的11版本已经很稳定了,同时支持跨平台到Windows Linux Android iOS MacWasmTizen

A
valonia缺点:
(1在中文支持和某些特定环境如龙芯+银河麒麟上可能遇到问题,而且资源占用相对较大。
(2)在异步编程、多线程上,还存在一些问题。
(3)由于该技术较新,现阶段社区、生态支持还很小。

总结:由于技术较新,还存在一些成熟度的问题。但总体跨平台表现不错,不仅能用于移动端,在桌面端也有潜力用来替代WinForm/WPF。是C#程序员可以发展的方向。

3.Flutter(推荐指数:5颗星)
Flutter优点:
(1)性能卓越:Flutter使用Dart语言编写,其编译成本低,运行速度快,可提供流畅的用户体验。可以嵌入到别的开发中,非常适合互联网类开发。
(2)Java go开发者不会选用MAUI的,但WPF程序员选择Flutter却没什么阻碍。上述MAUI、Avalonia微软技术在生态上比不上Flutter。Flutter作为Google推崇的跨平台开发框架,拥有庞大的社区和丰富的资源,使得开发者在遇到问题时能够获得大量的帮助和指导。

下面是我用FLutter做的,看多美?


Flutter缺点:
(1)没有特别好的商业ui库,不适合管理类软件开发
(2)它不是某个流行平台的原生ui,dart语言又太小众并且也不是那么优秀,对用户的吸引力有限,所以这么多年来一直不温不火,在可以认知到的一段时间内,也看不到有什么大流行的可能。

总结:技术生态较成熟。Java、Go等非微软程序员可以选择它。

-End-

关心.NET社区大事?学习C#顶阶技术?请加入下述技术讨论群。向大佬学习、探行业内幕、享时代机遇。进名企+拿高新!

点击上方卡片关注公众号
回复'加群',进.NET技术社区交流群
回复'面试',获取C#/.NET/.NET Core面试宝典
回复'C#',领取零基础学习C#编程
回复'NET',领取.NET零基础入门到实战
回复'Linux',领取Linux从入门到精通
回复'wpf',领取高薪热门【WPF上位机+工业互联网】从零手写实战
回复'Modbus',领取初识C#+上位机Modbus通信
回复'PLC',领取C#语言与西门子PLC的通信实操
回复'blazor',领取blazor从入门到实战
回复'TypeScript',领取前端热门TypeScript系统教程
回复'vue',领取vue前端从入门到精通
回复'23P',领取C#实现23种常见设计模式
回复'MongoDB',领取MongoDB实战
回复'Trans',领取分布式事务
回复'Lock',领取分布式锁实践
回复'Docker',领取微服务+Docker综合实战
回复'K8s',领取K8s部署微服务