前置条件 :根 Element 是RenderObjectToWidgetElement 类型。所以也是从RenderObjectToWidgetElement的mount方法说起:
1 先调用顶层父类的mount方法。主要有两父类:
1.1 最顶层父类 Element
element的mount方法中主要做了一些属性的初始化,以及element树的关联
1.2 二级父类RenderObjectElement
RenderObjectElement的mount方法中调用widget.createRenderObject(),创建renderObject。接着调用attachRenderObject(跟节点啥也没做)
2 调用完父类的mount方法,接着调用RenderObjectToWidgetElement的mount方法,调用_rebuild方法。
3 在_rebuild方法中,调用updateChild方法。

4 对于根元素child位null,会走到 inflateWidget,newWidget 就是我们自己runApp传递的Widget。

5 在inflateWidget,调通createElement创建element继续调用element的mount方法。这里就又绕回第一步了。不同的是第一个参数parent不是null了。
5.1 走到1.2 的attachRenderObject,向上遍历找寻第一个RenderObjectElement,调用找到的向上遍历找寻第一个RenderObjectElement.insertRenderObjectChild,让两个element的RenderObject建立父子关系。

6 在执行insertRenderObjectChild,建立父子关系的时候会给child或者children赋值,最终调用的是
ContainerParentDataMixin 或者 RenderObjectWithChildMixin 等等混入类的setChild方法
7 就会调用到adoptChild,就会调用到setUpParantData()

7 在执行完insertRenderObjectChild之后,后面的代码如下,
_findAncestorParentDataElements 做的主要工作就是向上找所有的ParentDataElement,放到数组返回。接着遍历执行_updateParentData,主要做的工作就是执行 parentDataWidget.applyParentData()