flutter_in_action_2nd icon indicating copy to clipboard operation
flutter_in_action_2nd copied to clipboard

第十四章 14.3.2 渲染管线内容不足

Open itwenhao123456 opened this issue 3 years ago • 2 comments

你好,你的文章我觉得写得很好,但是我看到了一些描述,或者文字有出入的地方,还是希望给你指出来: 第十四章 14.3.2 渲染管线里面对于setState里面的内容我觉得写得是不够的,因为这个包括了一个很重要的过程就是build的过程,一个完整的周期如下:

void drawFrame() { buildOwner!.buildScope(renderViewElement!); //重新构建widget树 pipelineOwner.flushLayout(); // 更新布局 pipelineOwner.flushCompositingBits(); //更新合成信息 pipelineOwner.flushPaint(); // 更新绘制 if (sendFramesToEngine) { renderView.compositeFrame(); // 上屏,会将绘制出的bit数据发送给GPU pipelineOwner.flushSemantics(); // this also sends the semantics to the OS. _firstFrameSent = true; } }

而build则是第一步,其余的几步你都很详细的写了,但是第一个build这一重要的部分却几乎省略了(通过了解这个build的整个流程你不仅可以知道运行的流程还可以知道一些周期回调函数是怎么执行的,还可以清楚例如Element链,RenderObject链是怎么形成的等等细节) 我的这篇博客写到了这个话题 https://www.jianshu.com/p/b34e46462594 可以给你作为参考以完善该节的内容,写出来可以给更多人提供便利 我的邮箱如下 [email protected] 希望能有交流···

itwenhao123456 avatar Jan 18 '22 03:01 itwenhao123456

这块我当时想过要不要展开,如果只是从performRebuild开始看主流程倒比较简单,关键就是 build可以和layout交替执行,这块如果要展开讲,就麻烦了,我感觉这些了解的必要性不大,所以就没在树中展开

wendux avatar Feb 22 '22 10:02 wendux

这块我当时想过要不要展开,如果只是从performRebuild开始看主流程倒比较简单,关键就是 build可以和layout交替执行,这块如果要展开讲,就麻烦了,我感觉这些了解的必要性不大,所以就没在树中展开

我觉得还是写出来比较好,哪怕一开始只是单独写,到最后可以帮助大家串起来都好,因为缺少这一块总感觉怪怪的,而且你可以参开一下我的博客,或者网上有些的博客写这一块的内容有个大概思路也可以···

itwenhao123456 avatar Mar 04 '22 08:03 itwenhao123456