头图

哈喽,我是老刘
我带着团队切换到 Flutter 开发已经5年多了。
目前手机端App主要使用Flutter开发。
桌面端使用的技术栈会比较杂,其中有一小部分会用Flutter,主要看项目的具体情况。
我先说一下在PC端哪些情况下我会使用Flutter开发。

适合使用Flutter开发桌面端的场景

场景一:既有手机端也有PC端

如果手机端和桌面端有大量的UI和业务逻辑是相同的,这种情况是最适合Flutter开发的。
这里说的UI相同并不是说整个页面长得一样,只要页面内容的一部分是可以复用的即可。
这种相同的部分抽象出独立组件,效果会很好。
具体来说,当我们开发一个应用时,通常会有一些核心模块,比如用户登录、信息展示、数据统计等。
如果这些模块在手机端和桌面端都有相似的功能,那么可以通过Flutter将这些模块封装成独立组件,然后在两个平台上共享使用。
这不仅可以减少重复开发的工作量,还能保证不同平台上的一致性和用户体验。

场景二:只有PC端

这种情况下其实在PC端可以选择的技术栈比较多。
比如我最常用的是基于Python的一些方案。
这种程序一般UI都很简单,主要是一些配置项、输入框和几个按钮,主要功能是利用Python庞大的三方库完成一些后台任务。
例如,开发一个内部使用的配置管理工具,使用Python可以快速实现其核心功能,而其简单的UI需求可以通过Tkinter等库实现。

还有一种情况是我们需要为业务、测试同事编写一些小工具。
这类工具通常功能相对简单,但需要有一个较为友好的用户界面,便于非技术人员使用。
这时,Flutter就是一个不错的选择。
它不仅可以提供一个漂亮的UI,还能利用Dart语言的优势,实现流畅的交互体验。
而且,由于我们团队已经在移动端广泛使用Flutter,因此使用同一套技术栈可以大大提高开发效率,减少切换不同技术栈带来的不便。
我自己就非常不适应在不同技术栈频繁切换,经常会快捷键什么的肌肉动作搞错了。

Flutter在PC端的一些坑

没有官方的多窗口支持

很多人提到这一点,但我觉得这不是坑,因为有解决方案。
方案1:使用第三方库。
目前市面上有一些第三方库可以实现多窗口管理,但问题是这些库的更新频率不一定很高,有时可能无法及时适配最新的Flutter版本。
这就需要我们在选择第三方库时,慎重评估其维护情况和社区支持。
方案2:自定义多窗口。
因为我们在手机端使用的是Flutter + 原生的混合栈管理方案。
所以很自然的,在桌面端也会考虑类似方案。
通过嵌入原生代码,我们可以实现多窗口管理。
尽管这种方法需要更多的开发工作和技术积累,但它提供了最大的灵活性和可控性。

引擎方面的bug

在开发过程中,我们感觉macOS端在引擎方面的bug稍微多一点,比如内存泄漏、引擎crash等。
Windows端也有类似问题,但相对少一些。
这些问题有时会影响到开发进度和产品质量。
举个例子,我们曾经在一个项目中遇到macOS版本的Flutter应用在特定场景下会出现内存泄漏,导致应用运行一段时间后出问题。
虽然最终通过一些临时方案解决了问题,但这也提醒我们在使用Flutter开发桌面应用时,需要做好充分的测试和预案。

官方支持力度较弱

个人认为桌面端最主要的问题是官方团队在PC端的问题处理上可能比手机端慢。
这一点在日常开发中会带来一些困扰,因为有些问题必须依赖官方的修复和支持。
等待官方修复的bug时间较长,有时不得不寻找临时解决方案或替代方案。

其他考虑因素

除了上面提到的主要问题,使用Flutter开发桌面应用时还需要考虑其他一些因素。比如:

UI设计

桌面端的UI设计和移动端有很大的不同。
桌面应用通常有更多的屏幕空间,需要考虑窗口的布局、缩放、拖拽等功能。

插件生态

虽然Flutter的插件生态非常丰富,但并不是所有插件都支持桌面端。
这就需要我们在选择插件时,仔细查看其支持的平台,有可能需要编写自己的插件或对现有插件进行扩展。

总结

总体来说,Flutter在PC端的支持正在逐步完善。
虽然目前还存在一些问题和限制,但它的跨平台优势以及快速开发的特性依然使它在许多场景下成为一个不错的选择。
希望未来Flutter官方能够加大对PC端的支持力度,解决现有问题,让Flutter在桌面端的表现更加出色。
相信随着时间的推移,Flutter在桌面端的应用会越来越广泛,成为更多开发者的首选工具。

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


程序员老刘
1 声望2 粉丝

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