Flutter之初始
Flutter是什么
Flutter是一个UI SDK(Software Development kit),可以作为移动端(iOS、Android)、Web端、桌面的跨平台解决方案。
Flutter的特点
使用Flutter内置美丽的Material Design和Cupertion widget、丰富的motion API、平滑而自然的滑动效果和平台感知,为您的用户带来全新的体验。
Flutter的UI渲染性能很好。在生产环境下,Flutter将代码编译成机器码执行,并充分利用GPU的图形加速能力,因此使用Flutter开发的移动应用即
使在低配手机上也能实现每秒60帧的UI渲染速度。
Flutter的引擎使用C++编写,包括高效的Skia 2D渲染引擎,Dart运行时和文本渲染库
支持Hot Reload(热重载),相比较移动端需要run所有的代码才能看到效果,热重载是即时看到实时的效果
Flutter是一个完全开源的项目。
Flutter绘制原理图
1.GPU将信号同步到UI线程
2.UI线程用Dart来构建图层树
3.图层树在GPU线程进行合成
4.合成后的视图数据提供给Skia引擎
5.Skia引擎通过openGL或者Vulkan将显示内容提供给GPU
Flutter与RN的本质区别
Flutter利用Skia绘图引擎,直接通过CPU、GPU进行绘制,不需要依赖任何原生控件,形成闭环
RN是通过JavaScript虚拟机扩展调用系统组件,由Android和iOS系统进行组件的渲染。
渲染引擎skia
Skia就是 Flutter向 GPU提供数据的途径。
Skia(全称Skia Graphics Library(SGL))是一个由C++编写的开源图形库
Skia 已然是 Android 官方的图像渲染引擎了,因此 Flutter Android SDK 无需内嵌 Skia 引擎就可以获得天然的 Skia 支持
底层渲染能力统一了,上层开发接口和功能体验也就随即统一了,开发者再也不用操心平台相关的渲染特性了。也就是说,
Skia 保证了同一套代码调用在Android 和 iOS 平台上的渲染效果是完全一致的
对于 iOS 平台来说
由于 Skia 是跨平台的,因此它作为 Flutter iOS 渲染引擎被嵌入到 Flutter 的 iOS SDK 中,替代了 iOS 闭源的 Core Graphics/Core
Animation/Core Text,这也正是 Flutter iOS SDK 打包的 App 包体积比Android 要大一些的原因。