美文网首页
flutter 声明周期相关 element.deactivat

flutter 声明周期相关 element.deactivat

作者: 菜鸟何时起飞 | 来源:发表于2022-03-20 20:50 被阅读0次
    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.deactivat

          本文链接:https://www.haomeiwen.com/subject/ngikdrtx.html