コンテンツにスキップ

RenderObjectElement クラス

対応するRenderObjectを祖先のRenderObjectツリーへ接続するElementの基底クラスです。

名前空間: FloatSoda.Elements
アセンブリ: FloatSoda.dll

public abstract class RenderObjectElement : Element, IBuildContext, IComparable<Element>

object ← Element ← RenderObjectElement

RenderObjectElement<T>

IBuildContext, IComparable<Element>

Element.Widget, Element.Parent, Element.Depth, Element.RenderObject, Element.InheritedWidgets, Element.Dependencies, Element.Owner, Element.DependOnInheritedWidgetOfExactType<T>(), Element.GetElementForInheritedWidgetOfExactType<T>(), Element.UpdateInheritance(), Element.InDirtyList, Element.Dirty, Element.VisitChildren(Action<Element>), Element.Mount(Element?), Element.Slot, Element.UpdateChild(Element?, Widget?), Element.UpdateChild(Element?, Widget?, object?), Element.UpdateSlotForChild(Element, object?), Element.UpdateSlot(object?), Element.Update(Widget), Element.InflateWidget(Widget, object?), Element.AttachRenderObject(), Element.DetachRenderObject(), Element.DeactivateChild(Element), Element.Deactivate(), Element.DidChangeDependencies(), Element.MarkNeedsBuild(), Element.Reassemble(), Element.Rebuild(), Element.PerformRebuild(), Element.CompareTo(Element?), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

ServiceScopeExtension.GetRequiredService<T>(IBuildContext), ServiceScopeExtension.GetService<T>(IBuildContext)

最近傍の祖先RenderObjectElementへ、このElementのRenderObjectを子として接続します。

public override void AttachRenderObject()

接続先として記録された祖先RenderObjectElementから、このElementのRenderObjectを切り離します。

public override void DetachRenderObject()

Elementツリーを親方向へ探索し、最も近いRenderObjectElementを取得します。

public RenderObjectElement? FindAncestorRenderObjectElement()

RenderObjectElement?

最も近い祖先のRenderObjectElement。該当する祖先が存在しない場合はnull。

このElementのRenderObjectへ子RenderObjectを挿入します。

public virtual void InsertRenderObjectChild(RenderObject? child)

child RenderObject?

挿入する子RenderObject。子を持たないことを表す場合はnull。

InsertRenderObjectChild(RenderObject?, object?)

Section titled “InsertRenderObjectChild(RenderObject?, object?)”

このElementのRenderObjectへ、slotが示す位置に子RenderObjectを挿入します。

public virtual void InsertRenderObjectChild(RenderObject? child, object? slot)

child RenderObject?

挿入する子RenderObject。子を持たないことを表す場合はnull。

slot object?

子のSlot。

基底実装はslotを使わず、InsertRenderObjectChildを呼び出します。

MoveRenderObjectChild(RenderObject, object?, object?)

Section titled “MoveRenderObjectChild(RenderObject, object?, object?)”

このElementのRenderObjectの中で、子RenderObjectを新しいslotが示す位置へ移動します。

public virtual void MoveRenderObjectChild(RenderObject child, object? oldSlot, object? newSlot)

child RenderObject

移動する子RenderObject。

oldSlot object?

移動前のslot。

newSlot object?

移動後のslot。

基底実装は何もしません。子の順序を持つElementが上書きします。

このElementのRenderObjectから子RenderObjectを取り除きます。

public virtual void RemoveRenderObjectChild(RenderObject? child)

child RenderObject?

取り除く子RenderObject。対象がない場合はnull。

UpdateChildren(List<Element>, List<Widget>, HashSet<Element>?)

Section titled “UpdateChildren(List<Element>, List<Widget>, HashSet<Element>?)”

複数の子Elementを新しいWidget一覧へ更新し、型とキーが一致する子を再利用します。

protected List<Element> UpdateChildren(List<Element> oldChildren, List<Widget> newWidgets, HashSet<Element>? forgottenChildren = null)

oldChildren List<Element>

更新前の子Element一覧。

newWidgets List<Widget>

更新後に子として構成するWidget一覧。

forgottenChildren HashSet<Element>?

再利用候補から除外する子Elementの集合。除外する子がない場合はnull。

List<Element>

新しいWidget一覧と同じ順序で構成された更新後の子Element一覧。

slotを更新し、接続先の祖先へ、このElementのRenderObjectを新しい位置へ移動するよう伝えます。

protected override void UpdateSlot(object? newSlot)

newSlot object?

新しいslot。

RenderObject