2024年了,是时候选择Flutter了吗
关于咸鱼和FLUTTER是我最早关于Flutter
的一篇文章,里面基本上都是一些对Flutter
的吐槽,其实我接触Flutter
比这更早,但是仅仅是跑了几个简单的demo,看过部分开源项目,实际上我并没有用它来开发过项目。如今快四年过去了,在这几年里,我也用Flutter
做了一些开发工作,包括自己的和商业项目,累积了一些经验,正好可以写点东西,是否可以考虑全面切换到Flutter
。
优势
先说Flutter
优势,开发UI效率高,可以说是极高,如果项目同时需要支持iOS
和Android
平台,选用它至少节省一半的界面时间,第三方库丰富,相对于几年前,现在pub.dev
上的库相当丰富了,大部分跟平台相关的库都有能用的了,一般用Flutter
开发过几个项目之后是不太想回到原生开发的,毕竟开发效率差距太大。
性能
目前版本已经到3.x了,相对于之前的版本性能上提升了不少,我们知道各种跨平台对性能的描述常用语是接近原生,Flutter
也一样,目前开发出来的应用体验确实已经不错了,但是我们要冷静,你需要这样理解,所谓的接近原生只是在高端设备上,中低端和陈旧设备上差距依然明显,如果你的APP需要兼容这些老的设备,选择Flutter
开发,一定得慎重。
开发效率和性能很大一部分空间上是冲突的,UI开发的时候效率高几乎就意味着嵌套层级多,冗余元素随处可见,这个其实在Web前端圈搞出一大堆框架后就很明显,直接加速硬件淘汰,说好听点是促进产业发展,但是手机的性能毕竟不能跟pc比,即使采用Flutter
,我们也要尽量减少布局的复杂性,比如跨平台一向做不好的列表项复用,以前ReactNative
就迟迟无法解决,而Flutter
发展到今天,这个问题依然解决的不够理想,说是可以复用,实际使用跟原生差距非常大,以至于很长一段时间我一直怀疑自己使用方式有问题,事实上pub.dev
好多列表类型的控件都有问题,item数量和复杂度一上来,帧率直接暴降,有的干脆直接崩了。
缺点
插件不稳定
插件很多存在问题,毕竟是开源贡献的,如我自己的一个应用,做到后面发现有11个插件是有问题的,提PR可能很长时间没有人看,只能把源码拉下来自己修改,或者干脆自己完全实现。
跟系统相关的功能需要对原生开发有一定的了解
如果你的应用很多地方设计到原生系统,需要你对原生开发熟悉程度非常高才能解决一些问题,因此如果你只是熟练掌握Flutter
开发对原生开发不熟悉的话只能做一些与系统耦合度很低的应用。
安装包比较大
Flutter
的安装包需要带入框架本身的一些东西,要比原生的大很多,比如安卓原生开发可能几M或者十几M就够了,但是用Flutter
开发打包出来起步就是几十M或者上百M,有点Windows
上原生开发和使用Electron
开发的感觉,调试版本的包更大,通常是200M以上,做界面开发还好,可以热加载,做插件对接原生系统开发就很麻烦了,你需要一个高端的手机,至少是闪存写入非常快的手机,否则每次调试安装都得等半天。
应用展示
这是我用flutter开发的一个应用,可可便签,这是我两年前的一个想法,具体见准备做个小的商品管理系统可可小店,当初本来想用原生开发配合服务端后台,后来一拖再拖,没有什么时间弄,于是就换成了Flutter
,断断续续的做了这么久,勉强能用。