flutter 初识(开发体验,优缺点)
前言
最近有个跨平台桌面应用的需求,需要支持 windows
/linux
/mac
系统,要做个更新应用的小界面,主要功能就是下载更新文件并在本地进行替换,很简单的小功能。
花了几分钟构建没做 UI
优化的示例界面:
由于我们的客户端程序员最近很忙,没时间做这个功能,正好我有空而且感兴趣。调研了一下跨平台应用的几个开发框架,由于我的主语言是 go
,一开始看了下 go
的 wails
,开发使用很方便,但是其是依赖 webview
的,在目标机器上一定要安装 webview
才能够使用,不在乎这点的可以用,编译出来的应用体积特别小,很好用。
这时突然想到 flutter
目前也支持了桌面端的应用开发,使用它主要是看中了:
-
GitHub
的星标多 -
Google
大厂背书 - 社区活跃
-
dart
简单,易于上手 - 移动端入手的,移动端开发较为完善
- 性能高
上手用用试试吧!好用的话后续可以在团队里推广下。
flutter 的优缺点
优点
- 快速的开发周期: 虽然热重载现在大部分框架都支持了,但是也提一下,热重载功能使开发周期变得更快。你可以在应用运行时实时看到代码更改的效果,这有助于快速调试和迭代开发。
- 漂亮的用户界面:
flutter
提供丰富的内置小部件和自定义绘制选项,使开发者能够轻松创建精美且高度定制化的用户界面。 - 高性能:
flutter
使用Skia
图形引擎进行渲染,可以在不同平台上实现高性能的用户界面体验。它还可以通过自带的硬件加速特性提供流畅的动画和过渡效果。 - 单一代码库: 开发者只需维护一个代码库,即可为多个平台生成应用程序,这简化了代码维护和团队协作。
- 丰富的社区支持:
flutter
拥有一个庞大且积极的社区,提供了大量的资源、插件和解决方案,帮助开发者解决问题并加速开发进程。
缺点
- 应用大小: 由于
flutter
应用程序需要包含其自身的运行时引擎和框架,因此应用的初始大小可能会比较大。虽然Google
在不断努力减小应用的大小,但对于某些应用来说,这仍然可能是一个问题。 - 平台特定性: 虽然
flutter
可以构建跨平台应用,但在某些情况下,特定平台的特性和行为可能无法完全抽象化,需要进行特定平台的定制开发。这应该是所有跨平台应用都需要面对的问题。 - 第三方库支持: 虽然
flutter
社区提供了许多插件和库,但与其他一些平台相比,某些特定领域的第三方库可能相对较少。特别是桌面端的开发,目前支持还是比较少的。 - 更新频率:
flutter
框架在不断发展,新版本会带来新特性和改进,但这也可能导致需要频繁更新应用以保持与最新版本的兼容性。毕竟是新东西,多修修bug
是好事。
我的跨平台开发经验
专做移动端的 phonegap
(cordova
) => 专做桌面端的 electron
=> 兼容小程序的 uniapp
=> 移动桌面端 flutter
。
总结
flutter
的上手难度还行,整体开发体验还不错,中文社区也挺强大的,基本上问题一搜都能有解答。
不过我做上述的小应用,还是花了一天的时间(搭建开发环境、熟悉其框架结构以及基础语法,数据请求等),主要还是遇到了一个编码的坑,长时间没找到解决方案。
这里要吐槽一下,我做的应用有个解压缩的功能,遇到了 gbk
编码问题,flutter
对中国用户真是不怎么友好,这个问题花了好半天,最后还是翻源码才解决(可能是我太菜了 =-=!)。
跨平台提供了便利性,同样也提高了复杂性,对开发者的知识广度还是有需求的。在使用这些跨平台的开发框架时,若是比较底层的,免不了要和原生打交道,一般问题多找找还是能够找到解决方案的。
在选择使用 flutter
还是其他技术时,应该根据项目需求和团队经验来进行权衡和决策。