• Mkl
    2019-07-06
    我有个疑问,
    “以下图为例:节点 1 在绘制完自身后,会再绘制子节点 2 和 6,最后绘制子节点 5、3 和 4。”
    这难道不是广度优先吗?深度优先不是先绘制1,然后2,3,5,4,6吗?

    作者回复: 确实是写错了,稍后我修改下。正确的绘制顺序是:节点1在绘制完自身后,会再绘制节点2,然后绘制它的子节点3、4和5,最后绘制节点6。

    
     31
  • 奇点
    2019-07-08
    建议弄一个项目,有理论有实践
    
     23
  • 楚小奕
    2019-07-23
    『Skia 已然是 Android 官方的图像渲染引擎了,因此 Flutter Android SDK 无需内嵌 Skia...』
    据我所知,Android上Flutter也自己打了一个skia,并不是用的OS的skia。

    作者回复: 感谢提醒,查了下engine源码,确实如此

    
     9
  • jjlanbupt
    2019-07-06
    总感觉讲的还不是特别透彻,可能受限于篇幅原因吧,比如渲染的过程顺序这些相对于其他平台或者原生来说,为了避免重复绘制,到底做了哪些优化?深度优先遍历等应该是普遍的思想,另外希望老师多放一些相关知识点的链接,比如涉及到GPU的放一些讲解原理的优质文章链接,期待老师后面的讲解

    作者回复: 后面会专门讲Widget的绘制流程的。
    Flutter's Rendering Pipeline可以参考:https://www.youtube.com/watch?v=UUfXWzp0-DU

    
     8
  • Smallfly
    2019-07-06
    跨端方案的发展本质上是在解决一个矛盾:

    企业需要多端研发(空间复杂度)以及开发周期长(时间复杂度)和用户体验的矛盾。

    而用户体验差往往表现在响应慢上(时间复杂度高)。
    
     7
  • felix
    2019-07-10
    老师能不能谈谈flutter的局限,或是跨平台的局限 ,flutter也没能(或是还没有)很好解决的问题。

    作者回复: 跨平台的局限就是真正的多端一致性很难完全保证,RN这种就不说了,很多组件的表现行为两边都不一样。
    就连Flutter也只能做到渲染层以上的多端一致性,还是有一些原生的东西(比如Push、地图、定位、蓝牙、WebView)绕不开,需要通过在原生上写插件来搞定。不过话说回来,如果真的绕开了,那Flutter就变成操作系统了,打出来的包没个几百兆估计是搞不定的

    
     3
  • HuDP
    2019-07-07
    感觉这种教学流程很好 开头有个大致的了解而不是一上来就扎进编码细节无法自拔
    
     3
  • 微笑美男😄
    2019-09-29
    深度优先 广度优先 不是很理解

    作者回复: 深度优先和广度优先是图/树结构中的概念:一层一层由上至下/由内而外遍历的方式,叫广度优先遍历;沿着一个节点方向深入探索,走到头再回退寻找其他方向的变量方式,叫做深度优先遍历。
    如果对这两个概念不熟悉的话,可以看一下数据结构中图和树部分的内容

    
     2
  • 巫山老妖
    2019-09-27
    跨平台(一套代码可以同时运行在iOS和Android平台)
    高保真(一整套包括底层渲染逻辑和上层开发语言的完整解决方案)
    高性能(代码执行效率和渲染性能媲美原生App的体验)

    学习这个专栏最好不让自己陷阱细节,而是从整体去理解Flutter的核心技术,通过实战,比如做一些小Demo来体会新的开发模式,再逐步深入,这样会更加扎实。
    展开

    作者回复: 赞👍

    
     2
  • Bojack
    2019-07-11
    从原理上来说flutter在两个原生端渲染应该是一致的,但是实际中发现还是有些区别的,比如下拉刷新这个组件,作者知道导致这个差异性的原因吗?

    作者回复: 为了尽可能模仿的比较像原生,ListView这个控件在Android和iOS上一些拖拽和滚动行为还是有差异的。依赖这些行为的下拉刷新组件也不例外

    
     2
  • Young
    2019-07-07
    在不同平台基于Skia引擎提供统一的渲染,学习的话,可以去flutter的中文网线先上手,然后结合老师的专栏
    
     2
  • Geek_yy
    2019-07-06
    Skia 引擎加工成 GPU 数据, 为什么不直接提供给 GPU 渲染,而又opengl最终提供给gpu渲染

    作者回复: OpenGL是Skia的绘图引擎

     1
     2
  • 神经蛙
    2019-07-21
    合成那一部分不太理解。
    “大量渲染内容的重复绘制”,这里的重复指的是什么,比如绘制Text('A')和Text('B')属于重复绘制吗?
    “根据图层大小、层级......将相同的图层归类合并”,什么情况下属于相同元素?
    归类合并怎么理解?是像photoshop中的图层合并一样吗?

    作者回复: 1.比如两个Widget A和B,如果A已经完全能够把B遮盖住,B的图层就没必要绘制了。
    2.归类合并可以按photoshop图层合并理解。

    
     1
  • xyl
    2019-07-15
    webgl是基于opengl的,skia也是基于opengl的,这两者有什么区别呢?

    作者回复: webgl派生于opengl,是isa的关系;
    skia是基于opengl,是use的关系。

    
     1
  • 回眸~
    2019-07-08
    热更新方案有没有啊老师

    作者回复: Flutter确实不支持动态化,不过业界已经有团队使用JSCore实现动态布局了,预计下半年会有一些较为成熟的方案出现

    
     1
  • 火腿
    2019-12-26
    flutter release编译成能直接在机器上执行的二进制文件吧? 那为什么运行时还需要Dart VM?
    
    
  • JW
    2019-12-12
    安卓系统下,sika引擎包含在apk中了吗?

    作者回复: 包含的

    
    
  • 白马啸西风
    2019-10-21
    老师,最近公司在考虑用flutter完成一个交通类的APP,里面有很多地图,要调用高德API,flutter能够胜任吗?

    作者回复: 把地图封装成一个独立的控件,暴露接口给dart层,内嵌在flutter widget中就可以了。具体可以参考27节

    
    
  • 雷声大
    2019-10-04
    那张节点树还是没有看明白,既然 5 是 2 的子节点,为啥和 2 挤在一个圆里面,而不是像 3 和 4 一样作为子节点?

    作者回复: 父子之间一开始是在不同的层级,但中间会经历视图层级的合并(自动or手动),把一些能够合并的视图(比如纯叠加展示,无需交互的)都合为一层。
    这里说的是针对合并后的状态描述

    
    
  • 雷声大
    2019-10-04
    openGL 不是也是一个绘图引擎么? 他和 skia 的分工是什么样子的啊?

    作者回复: OpenGL是skia的渲染后端,主要用于GPU硬件加速

    
    
我们在线,来聊聊吧