Flutter面试中必问的一个面试题就是渲染相关的话题。作为Google在2018年发布的一款跨平台UI框架,使用Dart作为其开发语言,底层使用Skia图形库进行视图渲染,渲染速度和用户体验堪比原生。
Flutter渲染流程
总的来说,Flutter中一帧的渲染可以分为三个过程:请求渲染、绘制和光栅化。文章来源:https://www.toymoban.com/news/detail-833797.html
请求渲染阶段
Flutter中也是通过调用setState方法来通知刷新UI。文章来源地址https://www.toymoban.com/news/detail-833797.html
- 调用setState方法,将需要刷新的RenderObject加入dirtyList中;
- 调用window对象scheduleFrame函数,scheduleFrame函数是一个native函数,Dart层只是一个函数声明,具体逻辑是在C++层实现;
- C++层的scheduleFrame函数会调用Animator对象进行RequestFrame,最终会通过JNI调用回到Java层,调用Android系统的Choreographer监听下一个Vsync信号。
对应的源码如下:
void setState(VoidCallback fn) {
...
_element.markNeedsBuild(); //通过相应的element来实现更新,关于element,widget,renderOjbect这里不展开讨论
}
void markNeedsBuild() {
...
if (dirty)
return;
_dirty = true;
owner.scheduleBuildFor(this);
}
void scheduleBuildFor(Element element
到了这里,关于Flutter面试之渲染流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!