1

flutter与compose的爱恨情仇

 3 years ago
source link: https://xuyisheng.top/flutter_compose/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
07 August 2021
5 min read

flutter与compose的爱恨情仇

Coding 阅读:  11

话说天下大势,分久必合,合久必分,自Flutter举义起,已两年有余。

然天下苦客户端久矣,一个需求不论是Android还是iOS,各端的实现都不一样,开发难度也不一样,实现效果也不一样,开发时间double,bugfix也是double,所以,跨端的开发应运而生,从H5的探索到RN的探索,这些跨平台方案始终都没逃出原生开发的桎梏,直到Flutter的出现,让跨平台开发进入了全新的时代,自渲染引擎的跨平台方案,打开了跨平台的阳光大道,从目前来看,Flutter已经算是成功了。

有人的地方就有卷王。

同样的Google,内部又孵化出了Compose,从表现上来说,Compose和Flutter是非常接近的,不能说完全一样,毕竟还是有差别的。但整体都是申明式编程,这点已经是当前最热的编程趋势了,十年河东,十年河西。

那为啥Google内部也要这么卷呢?

究其原因,还是因为团队不同,Flutter诞生于Chrome团队,是一帮做Web的开发做的跨平台框架,从最开始的设计初衷,就是指向了跨平台这条路,而Compose,则是诞生于Android团队,是为了解决当前View的架构体系不能再继续适应申明式编程的范式而做出的重构。

所以,从这一点上来看,Flutter身上,实际带着很多前端的影子,从布局方式到代码风格,都是浓浓的前端风,而且Flutter的工作重心在于跨平台,所以在各端的细节打磨上还有一些不足,不论是状态管理还是数据流,Flutter的官方解决方案还没有形成统一,但是Flutter的自渲染引擎,让它的绘制功夫成了一绝,不用受限于原生的绘制,可以让渲染做到随心所欲,所以,如果你的App是一个偏向于强展示性的应用,那么Flutter可以让你的App更加富有表现力。

但Flutter的问题也很明显,由于它的独立性,这就导致了混编的问题会非常多,Flutter嵌入原生App后,资源、图片的交互和共享,就成了比较麻烦的问题,可以说,Flutter目前的核心应用场景是独立的跨平台App,而非混编的App。

那么Compose呢?

从时间点上来看,Compose的诞生晚于Flutter,但Compose充分吸收了Flutter的各种优点,如果你两种框架都有使用过,你就可以在它们身上同时发现彼此的影子。

对于Compose来说,它的首要任务不是解决跨平台问题,而是提高原生App的开发效率,推翻了原有的命令式View体系,使用Compose提供了一整套的申明式UI架构。

这样一来,格局就打开了,先不用纠结跨平台的各种问题,我就先把Android搞搞好,所以,Compose可以无缝和现有原生App混编,而且不能叫混编,因为它本身就是原生,只不过是利用一种框架,实现了新的编程语法,这种申明式的语法,完全放弃了xml的布局方式,这样一来,什么ViewBinding,DataBinding都成为了过去式,退一步,海阔天空。再借助Kotlin愈发成熟的语言机制,大量的语法糖和编译器黑科技,让Compose如虎添翼,所以从一开始,Compose在原生这条路上,就领先了Flutter一个车位,不论是协程还是Flow,还是JetPack组件,可以无缝提供给Compose,以至于状态管理、数据流的问题迎刃而解,特别是ConstraintLayout和MotionLayout的Compose化,让原生的布局编程相比Flutter有了质的飞跃。

那么问题来了,我该用哪个?

打工仔的世界里,哪里有单选题。

扶我起来,我还能学

当然,大家对待这些层出不穷的新技术,应该抱有这样的态度——海纳百川、追求卓越、开明睿智、大气谦和。

首先,Flutter和Compose并不冲突,我是原生开发,但并不妨碍我学习Flutter,我的开源项目Flutter Dojo,https://github.com/xuyisheng/flutter_dojo  ,也吸引了上千人加入我的Flutter修仙群,学了Flutter,再看Compose,很快就能上手,这叫什么,殊途同归。我们对待这些新技术一定要抱着谦卑的学习心态,了解它的使用,了解它的设计思路,正所谓海纳百川,有容乃大。

其次,技术不是单选题,但是却有优先级。

  • 如果你是全新的项目,希望快速开发,并且支持多端跨平台,那么Flutter绝对是你目前最好的选择。
  • 如果你是原生开发,需要提高开发效率,那么Compose和kotlin,绝对是你逃不掉的技术壁垒。

向大家推荐下我的网站 https://xuyisheng.top/ 专注 Android-Kotlin-Flutter 欢迎大家访问

  • shanghai,pudong,China
Android & Flutter Developer 《Android群英传》《Android群英传-神兵利器》作者
qrcode.jpg?v=12e85c571d qrcode_xys.jpeg?v=12e85c571d

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK