前言:
在1982年的原版电影《银翼杀手》中,人类已经发展出了一种人造的生命形式,很难将它们与人类区分开来。这些“复制品”被用于危险的工作,当它们开始反抗人类主人时,一种被称为“刀锋杀手”的警官出现了。
当谷歌第一次宣布Jetpack Compose时,不少人认为这将是flutter的结束。毕竟,既然可以使用Google提供的本地工具,为什么还要使用跨平台框架呢?
那我们来整体比较一下flutter和jetpack compose,看看他们各自有什么特点。
1、语言方面:
flutter使用的是一种由Google创建的面向对象语言Dart,Jetpack Compose使用的是一种由JetBrains创建的静态类型编程语言kotlin。这两种语言都有各自的优缺点,对于初学者来说,Dart更容易学习,而且在运行速度和内存使用方面,也并不输Kotlin。
2、易用性方面
这两个框架都相对容易使用, jetpack compose具有声明式UI方法,这意味着我们可以使用Kotlin代码来构建UI,而不必担心底层的复杂性。但是,Flutter在没有桥接逻辑的情况下直接访问操作系统级组件并不简单,需要较强的专业操作。
作为一个使用过这两种框架的我来说,使用JetpackCompose来创建优美的用户界面要比使用Flutter容易些。不过flutter在跨平台开发方面确实有着无可比拟的优势,此外,当你想要快速建立一个应用程序的原型时,Flutter中的热加载功能是必不可少的。
其实没有所谓的“最佳框架”,因为jetpack compose和flutter的定位并不相同,不是绝对的矛盾体,这取决于你想要去的公司采用的什么框架,以及你自己的需求和偏好。学有余力的朋友可以两者都尝试一下,这对以后个人的发展也都有帮助。
目前全网关于这两个框架的资料较为碎片化,对想要系统学习的人来说不太友好,所以我给大家分享jetpack compose和flutter的系统学习笔记,内容通俗易懂,知识点覆盖面广,内容严格按照深度和广度统一的原则来编排,有需要的朋友可以点击下方卡片免费获取。
《compose入门到精通》
目录:
第一章 初识 Jetpack Compose
- 为什么我们需要一个新的UI 工具?
- Jetpack Compose的着重点
- API 设计
- Compose API 的原则
- 深入了解Compose
- 插槽API
第二章 Jetpack Compose构建Android UI
- Android Jetpack Compose 最全上手指南
- 深入详解 Jetpack Compose | 优化 UI 构建
- 深入详解 Jetpack Compose | 实现原理
第三章 Jetpack Compose 项目实战演练(附Demo)
- Jetpack Compose应用1
- Jetpack Compose应用2
- Jetpack Compose应用做一个倒计时器
- 用Jetpack Compose写一个玩安卓App
- 用Compose Android 写一个天气应用
- 用Compose快速打造一个“电影App”
《Flutter进阶学习笔记》
目录
第一章 为什么 Flutter 是跨平台开发的终极之选
- 这是为什么?
- 跨平台开发
- 什么是Flutter
- Flutter特性
- Flutter 构建应用的工具
- 使用 Flutter 构建的热门应用
- 构建 Flutter 应用的成本
第二章 在Windows上搭建Flutter开发环境
- 使用镜像
- 系统要求
- 获取Flutter SDK
- 编辑器设置
- Android设置
- 起步: 配置编辑器
- 起步: 体验
- 体验热重载
第三章 编写您的第一个 Flutter App
- 创建 Flutter app
- 使用外部包(package)
- 添加一个 有状态的部件(Stateful widget)
- 创建一个无限滚动ListView
- 添加交互
- 导航到新页面
- 使用主题更改UI
第四章 Flutter开发环境搭建和调试
- 开发环境的搭建
- 模拟器的安装与调试
- 开发环境的搭建
- 模拟器的安装与调试
第五章 Dart语法篇之基础语法(一)
- 简述
- Hello Dart
- 数据类型
- 变量和常量
- 集合(List、Set、Map)
- 流程控制
- 运算符
- 异常
- 函数
- 总结
第六章 Dart语法篇之集合的使用与源码解析(二)
- List
- Set
- Map
- Queue
- LinkedList
- HashMap
- Map、HashMap、LinkedHashMap、SplayTreeMap区别
- 命名构造函数from和of的区别以及使用建议
第七章 Dart语法篇之集合操作符函数与源码分析(三)
- 简述
- Iterable
- forEach
- map
- any
- every
- where
- firstWhere和singleWhere和lastWhere
- join
- take
- takeWhile
- skip
- skipWhile
- follwedBy
- expand
- reduce
- elementAt
第八章 Dart语法篇之函数的使用(四)
- 简述
- 函数参数
- 匿名函数(闭包,lambda)
- 箭头函数
- 局部函数
- 顶层函数和静态函数
- main函数
- Function函数对象
第九章 Dart语法篇之面向对象基础(五)
- 简述
- 属性访问器(accessor)函数setter和getter
- 面向对象中的变量
- 构造函数
- 抽象方法、抽象类和接口
- 类函数
- 总结
第十章 Dart语法篇之面向对象继承和Mixins(六)
- 简述
- 类的单继承
- 基于Mixins的多继承
- 总结
第十一章 Dart语法篇之类型系统与泛型(七)
- 简述
- 可选类型
- 接口类型
- 泛型
- 类型具体化
- 总结
第十二章 Flutter中的widget
- Flutter页面-基础Widget
- Widget
- StatelessWidget
- State生命周期
- 基础widget
- DefaultTextStyle
- FlutterLogo
- Icon
- Iamge.asset
- CircleAvatar
- FadeInImage
- 按钮
- FlatButton
- OutlineButton
- TextFormField
后话:
flutter和jetpack compose的特性远远不止这些,它们本身还有着非常多值得学习的地方,这个只有大家自己去学习才能体会得到。另外,我们还要透过这两个框架去看更深层次的实现原理,世界千变万化,各种框架也不例外,虽然flutter和compose正处在快速发展阶段,但我们也要明白:学会举一反三才是最重要的学习能力。