当前位置:   article > 正文

Flutter面试之渲染流程

Flutter面试之渲染流程

Flutter面试中必问的一个面试题就是渲染相关的话题。作为Google在2018年发布的一款跨平台UI框架,使用Dart作为其开发语言,底层使用Skia图形库进行视图渲染,渲染速度和用户体验堪比原生。

Flutter渲染流程

总的来说,Flutter中一帧的渲染可以分为三个过程:请求渲染、绘制和光栅化。

请求渲染阶段

Flutter中也是通过调用setState方法来通知刷新UI。

  1. 调用setState方法,将需要刷新的RenderObject加入dirtyList中;
  2. 调用window对象scheduleFrame函数,scheduleFrame函数是一个native函数,Dart层只是一个函数声明,具体逻辑是在C++层实现;
  3. C++层的scheduleFrame函数会调用Animator对象进行RequestFrame,最终会通过JNI调用回到Java层,调用Android系统的Choreographer监听下一个Vsync信号。
    对应的源码如下:
  1. void setState(VoidCallback fn) {
  2.    ...
  3.     _element.markNeedsBuild(); //通过相应的element来实现更新,关于element,widget,renderOjbect这里不展开讨论
  4.   }
  5.   void markNeedsBuild() {
  6.    ...
  7.     if (dirty)
  8.       return;
  9.     _dirty = true;
  10.     owner.scheduleBuildFor(this);
  11.   }
  12.    void scheduleBuildFor(Element element
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/143553
推荐阅读
相关标签
  

闽ICP备14008679号