Flutter诞生于Chrome团队,是一帮做Web的开发做的跨平台框架,从最开始的设计初衷,就是指向了跨平台这条路,而Compose,则是诞生于Android团队,是为了解决当前View的架构体系不能再继续适应申明式编程的范式而做出的重构。
flutter和jetpack compose特点
语言方面:
flutter使用的是一种由Google创建的面向对象语言Dart,Jetpack Compose使用的是一种由JetBrains创建的静态类型编程语言kotlin。这两种语言都有各自的优缺点,对于初学者来说,Dart更容易学习,而且在运行速度和内存使用方面,也并不输Kotlin。
易用性方面
这两个框架都相对容易使用, jetpack compose具有声明式UI方法,这意味着我们可以使用Kotlin代码来构建UI,而不必担心底层的复杂性。但是,Flutter在没有桥接逻辑的情况下直接访问操作系统级组件并不简单,需要较强的专业操作。
作为一个使用过这两种框架的我来说,使用JetpackCompose来创建优美的用户界面要比使用Flutter容易些。不过flutter在跨平台开发方面确实有着无可比拟的优势,此外,当你想要快速建立一个应用程序的原型时,Flutter中的热加载功能是必不可少的。
Flutter 和 Compose解析
Flutter 和 Compose 的未来目标会比较一致,但是至少它们出现的初衷是不一样。
- 首先 Compose 是 Jetpack 系列的全新 UI 库,理解下这点!Compose 是 Jetpack 系列的成员之一,所以可以被应用到 Android 界面开发中,所以你也可以选择不用,用不用都能开发 Android 的 UI 。
- 然后再说 Compose 出生的目的:就是为了重新定义 Android 上 UI 的编写方式,为了提高 Android 原生的 UI 开发效率,让 Android 的 UI 开发方式能跟上时代的步伐。
- 不管你喜不喜欢,声明式的界面开发就是如今的潮流,不管是 React 、SwiftUI 、Flutter 等都在表明这一点。
- 而对于 Flutter 而言就是跨平台,因为 Flutter 没有自己的平台 ,有人说 Fuchsia 会是 Flutter 的家,但那已经属于后话,毕竟 Fuchsia 要先能养活自己。
- 因为 Flutter 出生就是为了跨平台存在的全新 UI 框架,从底层到上层都是“创新”和“大胆”的设计,就选择 Dart 本身就是一项很“大胆”的决定,甚至在 Web 平台都敢支持选用 Canvaskit 的 WebAssembly 模式。
Flutter和Compose该学习哪一个?
Flutter和Compose并不冲突,我是原生开发,但并不妨碍我学习Flutter,学了Flutter,再看Compose,很快就能上手.Flutter屏蔽了不同操作系统底层的图形界面API,直接利用skia引擎进行图形界面的绘制,类似于提供一个可以在各个平台上运行的画板,让你在上面作画,因此能够做到同一套UI代码在全平台都能编译呈现同样的效果,合理使用某些包和插件甚至可以进行小部分跨平台的简单业务逻辑的开发。同样的,Compose的图形界面绘制部分也是由skia引擎完成。
至于自己适合哪一种,各自结合自身进行选择。《flutter》与《Compose》关于这些技术我也有一些文档,可以看我主业的分享。