美文网首页
浅显易懂Flutter

浅显易懂Flutter

作者: 笑破天 | 来源:发表于2020-08-15 23:52 被阅读0次

一、是什么?

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.--Google
Flutter是谷歌的用来构建漂亮的、近原生的跨平台UI工具包,能够一份代码多端运行。

主要分为三部分:Framework、Engine、Embedder(嵌入式平台),基于Framework开发App,在Engine里运行。


Flutter框架介绍
  • Framework部分
    这一部分最底层是Foundation,也就是与Engine引擎相关的一些方法api,上一层就是动画绘制还有手势相关,其次才是Rendering相关,然后才是我们Flutter重要Widget,可以看出动画手势绘制都会重新出发render,Widget才会重新绘制。在Widget之上有两种设计的风格分别是iOS的Cupertino与Android的Material两种风格的组件库。
  • Engine部分
    底下引擎部分就是Flutter与Cordova、Ionic、AppCan、Dcloud、APICloud、React Native这些框架最根本不同的地方,Flutter不是使用标准Web技术,而是借助可移植的图形加速渲染引擎、高性能的本地ARM代码,并以此实现跨设备、跨平台的高质量用户体验。

二、能干什么?

1、平台一致(双端UI和业务一致)
2、便捷开发(一份代码,双端运行)
3、亚秒级热重载(快捷方便的试验、重构UI、添加特性和修复bug)
4、性能直逼Native

三、什么原理?

1、Flutter 向 GPU 提供显示数据


Flutter to GPU
  • GPU将信号同步到 UI 线程
  • UI 线程用Dart来构建图层树
  • 图层树在GPU 线程进行合成
  • 合成后的视图数据提供给Skia 引擎
  • Skia 引擎通过OpenGL 或者 Vulkan将显示内容提供给GPU

2、GPU 把展示数据显示到屏幕


GPU to 显示屏
  • CPU 将计算好的显示内容提交给 GPU
  • GPU 使用 VRAM 中的数据和命令,完成图像渲染
  • 将渲染好的结果存入帧缓冲区 (FrameBuffer)
  • 然后视频控制器将帧缓冲区的数据传递给显示器显示

四、怎么干?

五、灵魂拷问

1、怎么跨平台?
UI表达用Dart,渲染用基于C++的Dart Engine和OpenGL。

2、“hot reload”是怎么做到的?
hot reload 的原理是插桩,类似instant run,debug模式下,对每一个方法和成员进行插桩,运行时期reload就生效了,无需重新安装
注意:全局变量初始化、静态成员初始化、main方法不能热加载。

3、为什么有的时候不支持热重载?

相关文章

网友评论

      本文标题:浅显易懂Flutter

      本文链接:https://www.haomeiwen.com/subject/fazadktx.html