[Flutter笔记]LeafRenderObjectWidget/LeafRenderObjectElement

1,271 阅读1分钟

LeafRenderObjectWidget

LeafRenderObjectWidget

classDiagram
    LeafRenderObjectWidget <|-- Texture
    LeafRenderObjectWidget <|-- RawImage
    LeafRenderObjectWidget <|-- PerformanceOverlay
    LeafRenderObjectWidget <|-- ErrorWidget
    LeafRenderObjectWidget <|-- PlatformViewSurface
    PlatformViewSurface <|-- _AndroidPlatformView
    PlatformViewSurface <|-- _UiKitPlatformView

示例:ErrorWidget

ErrorWidget

classDiagram
    class LeafRenderObjectWidget {
        +LeafRenderObjectElement createElement()
    }
    LeafRenderObjectWidget <|-- ErrorWidget
    class ErrorWidget {
        +String message
        +RenderBox createRenderObject(BuildContext)
    }

LeafRenderObjectElement

LeafRenderObjectElement

classDiagram
    RenderObjectElement <|-- LeafRenderObjectElement

示例:N/A

RenderObject

示例:RenderErrorBox

RenderErrorBox

classDiagram
    RenderBox <|-- RenderErrorBox
    class RenderErrorBox {
        +String message
        +bool sizedByParent
        +double computeMaxIntrinsicWidth(double)
        +double computeMaxIntrinsicHeight(double)
        +bool hitTestSelf(Offset)
        +performResize()
        +paint(PaintingContext, Offset)
    }

LeafRenderObjectWidget + LeafRenderObjectElement + RenderObject

示例: ErrorWidget + LeafRenderObjectElement + RenderErrorBox

ErrorWidget + LeafRenderObjectElement + RenderErrorBox

sequenceDiagram
    rect rgb(0, 0, 0, 0.1)
        parent(Element) ->>+ ErrorWidget: createElement()
        ErrorWidget ->> LeafRenderObjectElement: constructor()
        LeafRenderObjectElement -->> ErrorWidget: LeafRenderObjectElement
        ErrorWidget -->>- parent(Element): LeafRenderObjectElement
    end
    rect rgb(255, 0, 0, 0.1)
        parent(Element) ->> LeafRenderObjectElement: mount()
        LeafRenderObjectElement ->>+ ErrorWidget: createRenderObject()
        ErrorWidget ->> RenderErrorBox: constructor()
        RenderErrorBox -->> ErrorWidget: RenderErrorBox
        ErrorWidget -->>- LeafRenderObjectElement: RenderErrorBox
    end
    rect rgb(0, 255, 0, 0.1)
        parent(Element) ->>+ LeafRenderObjectElement: update()
        LeafRenderObjectElement -->>- ErrorWidget: updateRenderObject()
        LeafRenderObjectElement ->>+ LeafRenderObjectElement: performRebuild()
        LeafRenderObjectElement -->>- ErrorWidget: updateRenderObject()
    end