头图

哈喽,我是老刘
作为一名使用Flutter 6年的客户端开发者,有很多人问过我,Flutter是否适合桌面端开发。
以下是我对这一问题的综合评估,希望能为对此有疑惑的读者提供一些思路。

一、Flutter的优势

1、高效的开发

Flutter本身是一个成熟度非常高的工业级开发框架。
所以它提供的是一个完整的开发套件,比如IDE、调试工具、性能分析工具等,它不是一个简单是技术框架。
image.png
在这个开发套件中包含Dev tools 这样的分析调试工具,也包含热重载这样的优化开发体验的功能。
同时Flutter的Widget库提供了大量的预制组件,减少了从零开始构建UI的需求。

2、无缝的原生集成

通过平台通道,Flutter应用可以调用系统原生的API,例如访问设备的相机或日历功能。
这种集成方式允许开发者利用Dart编写主要的UI和业务逻辑,同时保留对原生性能和特定平台特性的访问。

3、高度一致性的跨平台体验

Flutter提供的平台一致性是众多跨平台框架中最顶级的。
原因是Flutter自带渲染引擎。
相比于MAUI这样最终转化为原生组件进行渲染的框架,Flutter在不同平台使用相同的引擎渲染同样的组件。
能从最基础的架构层面保证尽可能高的平台一致性效果。
image.png
其实在平台一致性方面Electron也非常好,因为它的UI其实就是网页,并且在应用中打包了V8内核进行渲染。
只不过我们很好理解,基于网页的UI,在性能方面终究有所欠缺。

4、强大的测试支持

Flutter对测试的支持有两个主要特点。
一是有完整的测试框架支持。
测试框架与Dart语言紧密结合,提供了模拟和测试工具,使得自动化测试变得更加容易。
二是执行性能很好。
不同于客户端原生的单元测试需要编译整个项目,Flutter的单元测试只需要在pc端编译被测文件和依赖的少数文件即可。
下面表格中列出了Flutter针对不同测试级别的性能、依赖度等评估
image.png
单元测试的执行效率很高,基本是秒级。
而这种执行效率为TDD这类依赖单元测试的开发流程真正在实战中可行。
这一点是很多跨平台框架不具备的。

5、活跃的社区和生态系统

Flutter社区提供了大量的插件和库,如flutter_markdown和url_launcher,这些插件可以轻松集成到项目中。

6、长期的维护和更新

Flutter团队定期发布新版本,引入新功能和改进,例如最近的版本中对Web和桌面端的支持增强。
Google对Flutter的持续投资确保了框架的长期发展和对新设备及操作系统版本的兼容性。

二、Flutter的劣势

1、陡峭的学习曲线

相对来说Dart是一门比较新的语言,大多数开发者需要重新学习其架构和编程模式。
而Flutter的设计有其独特的思路,很多客户端开发者刚开始学习时会不适应。
因此想要掌握Flutter的高级特性和最佳实践仍然需要大量的实践和经验。

2、桌面端支持的局限性

Flutter的桌面端支持相对较新,一些功能可能还在开发中或社区驱动,需要开发者关注和适应。
比如一些桌面端特有的功能,系统通知或多窗口支持等,可能需要额外的插件或原生代码集成。
另外Flutter官方对移动端的支持力度明显是要比桌面端高一些的。
这会体现在一些大家呼声比较高的功能迟迟得不到支持。
如果原生方面开发能力比较弱的团队,依赖官方提供解决方案多的,要慎重考虑。

3、性能竞争

虽然Flutter的性能通常优于基于Web技术的框架,但在某些特定场景下,如密集的图形处理或视频编辑,可能需要考虑其他技术。
当然,如果你已经有成熟的原生级解决方案,通过Flutter的混合开发模式去调用这些方案是可行的。

三、总结

技术选型应基于项目需求、团队技能和预期的用户体验进行综合评估与权衡。
如果您的团队对Dart和Flutter有深入的了解,并且项目需求与Flutter的特性相匹配,那么Flutter可以是一个优秀的选择。

如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》


程序员老刘
1 声望2 粉丝

客户端架构师,客户端团队负责人。一个月带领客户端团队从0基础迁移到Flutter 。目前团队已使用Flutter五年。