flutter 声明周期相关 element.deactivateChild

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中。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容