前言
从flutter上线以来,似乎就保守争议?那究竟是谁动了它的奶酪?
我们来看看flutter的发展史:
- 2014.10 - Flutter的前身Sky在GitHub上开源
- 2015.10 - 经过一年的开源,Sky正式改名为Flutter,低调期
- 2017.5 - Google I/O正式向外界公布了Flutter,这个时候Flutter才正式进去大家的视野
- 2018.6 - 距5月Google I/O 1个月的时间,Flutter1.0预览版
- 2018.12 - Flutter1.0发布,它的发布将大家对Flutter的学习和研究推到了一个新的起点
- 2019.2 - Flutter1.2发布主要增加对web的支持
由此开看:Flutter在逐渐的走向成熟和壮大,它的生态圈也在不断的发展。
那么它存在的意义如何?优势在哪里呢?
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。 在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
Flutter使用自己的高性能渲染引擎来绘制widget。这样不仅可以保证在Android和iOS上UI的一致性,而且也可以避免对原生控件依赖而带来的限制及高昂的维护成本。
Flutter使用Skia作为其2D渲染引擎,Skia是一个 2D的绘图引擎库,其前身是一个向量绘图软件,Chrome和 Android均采用 Skia作为绘图引擎。 Skia提供了非常友好的 API,并且在图形转换、文字渲染、位图渲染方面都提供了友好、高效的表现。
Flutter优势
1、性能强大,流畅
Flutter对比weex和react native相比,性能的强大是有目共睹的。基于dom树渲染原生组件,很难与直接在原生视图上绘图比肩性能,Google作为一个轮子大厂,直接在两个平台上重写了各自的UIKit,对接到平台底层,减少UI层的多层转换,UI性能可以比肩原生,这个优势在滑动和播放动画时尤为明显。
2、优秀的动画设计
Flutter的动画简单到不可思议,动画对象会根据屏幕刷新率每秒产生很多个(一般是60个)浮点数,只需要将一个组件属性通过补间(Tween)关联到动画对象上,Flutter会确保在每一帧渲染正确的组件,从而形成连贯的动画。这种十分暴力的操作在Flutter上却看不到明显的卡顿,这也是Flutter的一个魔力所在。相比之下其他跨平台框架几乎不能设计动画……往往会遭遇非常严重的性能问题。
3、UI跨平台稳定
Google直接在两个平台上在底层重写了UIKit,不依赖于Css等外部解释器,几乎不存在UI表达不理想,渲染不正常的情况,可以获得非常稳定的UI表达效果。Css换个浏览器就有不同的表现,基于Css的跨平台框架很难获得稳定的UI表现。
4、可选静态的语言,语言特性优秀
Dart是一个静态语言,这也是相对于js的一个优势。Dart可以被编译成js,但是看起来更像java。静态语言可以避免错误,获得更多的编辑器提示词,极大的增加可维护性。很多js库也已经用ts重写了,Vue3.0的底层也将全部使用ts编写,静态语言的优势不言而喻。
缺点
说到这里那必须得带一些缺点批判,凡是有利有弊;那么flutter的缺点有那些呢?这也是一直饱受争议的因素
- 假装跨平台,躲不开原生代码
- 组合而不是继承的思路
- Widget的类型难以选择
- 糟糕的UI控件API
- 糟糕的资源管理设计
就业形势如何?
有优势还不行,必须受欢迎。一个再好的花瓶不能装水也是白搭。所以说到底,要对我们程序员有利;我们来看一则数据:
从2019年来其中岗位增长至3133%并且是持续增长性;再看到平均的flutter工程师薪资水平均在20k-30k之间。想必下来收入总体不错!
看到这里许多程序员们都开始蠢蠢欲动了,开发岗位多薪资高;不做flutter工程师那简直是之前在浪费光阴啊!不急我们来看看flutter工程师需要掌握那些技术,这些技术是不是会难道一大片呢?在这推荐这里套《Flutter工程师手册》学习计划路线如下:点击资料免费获取方式
Flutter技术路线
一、Dart语法基础
- Dart语法详解与编译原理
- Dart面向对象原理
- 变量,函数,操作符,异常
- 类的机制
- 初始化列表规则
- 命名构造方法
- 常亮构造方式
- 工厂构造特征
- Mixin
二、Flutter UI
- 列表和网格视图Widget
- ListView详解与应用
- GridView详解与应用
- 布局Widget
三、Flutter线程
- 事件队列
- async. await原理
- Future任务调度
- Promise语法
- Platform Runner线程
四、Flutter启动流程
- Drat虚拟机
- Skia引擎
- Flutter应用启动
五、Flutter3.0 FrameWork框架
- TaskRunner工作原理
- StatefulWidget运行机制
- Flutter动画原理:
- MessageL oop启动原理
- Platform Channel原理
- Flutter异步通信
六、Flutter性能监控
Flutter有三种构建模式,适用于不同的场景,想要对性能监控,都跑在Profile模式下:
- Debug
- Release
- Profile
上面就是flutter的大致学习思路与技术大致分布;针对个人可能难度褒贬不一。技术都是靠累积的,可以参考这套学习路线方法学习。学习起来更加简便,有条理,系统性的学习往往更加扎实快速掌握。另外上面附有这套相关的资料。
文末
Flutter和Dart语言的合璧,加之谷歌正在精心打造的Fuchsia操作系统,或许谷歌的野心是有一天让通过Flutter框架开发的应用运行在不同的智能设备上。
那么,恐怕不仅仅是“有人喜欢Flutter”,而是会有更多开发者加入利用这套框架进行应用开发的行列中。