Flutter面试之渲染流程

这篇具有很好参考价值的文章主要介绍了Flutter面试之渲染流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Flutter渲染流程

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

请求渲染阶段

Flutter中也是通过调用setState方法来通知刷新UI。文章来源地址https://www.toymoban.com/news/detail-833797.html

  1. 调用setState方法,将需要刷新的RenderObject加入dirtyList中;
  2. 调用window对象scheduleFrame函数,scheduleFrame函数是一个native函数,Dart层只是一个函数声明,具体逻辑是在C++层实现;
  3. 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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter 用Texture控件在Windows平台实现视频渲染

    提示:阅读此文章之前需要有C++开发经验,知道如何利用channel在C++和Dart之间做通信。 前言 一、PlatformView与Texture是什么? 二、使用步骤 1.在Flutter需要显示视频的地方声明Texture组件 2.在Windows插件代码里面创建TextureRenderer类 3.Flutter通过channel调用Windows插件创建Texture 4.Windows插

    2023年04月12日
    浏览(46)
  • Flutter系列:Flutter常见问答(可用于面试)

    Flutter系列 Flutter常见问答 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/135604801 【简介】:本文总结了数十道 Flutter/Dart 中常见的问题,所有的问题提供了答案提示。 1. 什么是 Flutter? Flutter 是由

    2024年01月17日
    浏览(44)
  • Flutter 使用texture_rgba_renderer实现桌面端渲染视频

    第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFI+CustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频(本章) 前面几章介绍了flutter使用texture渲染视频的方法,但

    2024年02月15日
    浏览(48)
  • Flutter中系统Emoji通过substring裁切后无法识别导致渲染错误

    在发布文章的时候,有标题和内容,标题可为空,在没有标题的情况下,截取部分内容当作标题。 内容列表显示的时候,某些特殊的情况下(并不重要),我们就需要裁切文章标题。 当文章标题中有文字 + 系统自带的 emoji 的时候,我们去裁切标题就会出现无法识别渲染出来

    2024年02月09日
    浏览(52)
  • Flutter 添加 example流程

    一、已有Flutter工程(命令)添加 example 1、cd 工程(flutter_plugin ,是自己创建的)根目录       例: flutter create example  执行命令创建example PS:cd example 后执行flutter doctor 后就可以看到效果 2、如果需要指定iOS/Android 语言,请添加 \\\"-i  / -a\\\" 参数      例: flutter create -i objc -a kotlin

    2024年02月15日
    浏览(43)
  • 【Flutter 面试题】解释 Flutter的热重载(Hot Reload)功能

    【Flutter 面试题】解释 Flutter的热重载(Hot Reload)功能 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 本专栏 是解决 Flutter 面试过程中可能出现的问题,而进行汇总整理

    2024年03月08日
    浏览(43)
  • 【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系?

    【Flutter 面试题】Dart是什么?Dart和Flutter有什么关系? 👏🏻 正在学 Flutter 的同学,你好! 😊 本专栏是解决 Flutter 面试过程中可能出现的问题,而进行汇总整理的。一个问题一篇文章,尽可能详细解答,满足面试需求。 🔍 想解决开发中的零散问题?碎片化教程 👉 Flutte

    2024年02月22日
    浏览(47)
  • 【Flutter 面试题】Flutter 是什么?它与其他移动开发框架有什么不同?

    👏🏻 正在学 Flutter 的同学,你好! 😊 本专栏是解决 Flutter 面试过程中可能出现的问题,而进行汇总整理的。一个问题一篇文章,尽可能详细解答,满足面试需求。 🔍 想解决开发中的零散问题?碎片化教程 👉 Flutter Tips 。 🔍 想深入学习 Flutter?系统化教程 👉 Flutter 从

    2024年01月24日
    浏览(49)
  • flutter开发实战-多语言flutter intl

    flutter开发实战-多语言flutter intl 之前做的应用中有用到多语言,一直没有整理,这里整理一下多语言设置流程。 使用的是Android studio 使用Android studio安装flutter_intl 插件,更新或者安装flutter_intl 插件后会提示重新启动IDE。 如图所示: 在Android Studio中菜单Tools找到flutter intl创建

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包