1 deactivateChild(Element child)
1.1 设置 child._parent = null;
1.2 RenderObjectElement.deactivateChild
1.2.1 _ancestorRenderObjectElement持有的renderObject 是child 持有的renderObject的父节点,
调用这个方法就是从父renderObject 节点移出 子renderOject。
1.2.2 设置_ancestorRenderObjectElement 为null ,_slot 为null。
1.3 并添加当前element 到owner!._inactiveElements.add(child)
1.3.1 在执行 add操作的时候 ,如果element._lifecycleState == _ElementLifecycle.active 会执行_deactivateRecursively
if (element._lifecycleState == _ElementLifecycle.active)
_deactivateRecursively(element)
1.3.2 执行_deactivateRecursively
1.3.2.1 调用 element.deactivate()
1.3.2.1.1 Element.deactivate()
处理_dependencies 相关逻辑 ,这里跟状态管理相关。
1.3.2.1.2 StatefulElement.deactivate()
回调了 state.deactivate();
1.3.2.2 遍历调用所有child的deactivate()
1.3.3 至此 所有需要移出的element 都添加到_InactiveElements的_elements中。
flutter 声明周期相关 element.deactivateChild
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 老孟导读:关于生命周期的文章共有2篇,一篇(此篇)是介绍 Flutter 中Stateful 组件的生命周期。第二...