Element クラス
Widgetツリー上の位置と可変状態を保持し、Widgetの更新をRenderObjectツリーへ反映する要素の基底クラスです。
名前空間: FloatSoda.Elements
アセンブリ: FloatSoda.dll
public abstract class Element : IBuildContext, IComparable<Element>ComponentElement, RenderObjectElement
実装するインターフェイス
Section titled “実装するインターフェイス”IBuildContext, IComparable<Element>
継承したメンバー
Section titled “継承したメンバー”object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()
拡張メソッド
Section titled “拡張メソッド”ServiceScopeExtension.GetRequiredService<T>(IBuildContext), ServiceScopeExtension.GetService<T>(IBuildContext)
Dependencies
Section titled “Dependencies”このElementが依存関係を登録したInheritedElementの集合を取得します。
protected HashSet<InheritedElement> Dependencies { get; }プロパティの値
Section titled “プロパティの値”Elementツリー上の深さを取得または設定します。 ルートを1とし、子へ進むごとに1ずつ増加します。
public int Depth { get; set; }プロパティの値
Section titled “プロパティの値”このElementが再構築を必要としているかどうかを取得または設定します。
public bool Dirty { get; set; }プロパティの値
Section titled “プロパティの値”再構築を予約する場合は、この値を直接設定せずMarkNeedsBuildを使用します。
InDirtyList
Section titled “InDirtyList”このElementがBuildOwnerの再構築待ちリストに登録されているかどうかを取得または設定します。
public bool InDirtyList { get; set; }プロパティの値
Section titled “プロパティの値”この値を直接変更しても、再構築は予約されません。
InheritedWidgets
Section titled “InheritedWidgets”このElementから参照できるInheritedWidgetの登録型と、最近傍の対応Elementとのマップを取得または設定します。 継承情報がまだ構成されていない場合はnullです。
public Dictionary<Type, InheritedElement>? InheritedWidgets { get; set; }プロパティの値
Section titled “プロパティの値”Dictionary<Type, InheritedElement>?
このElementツリーの再構築を管理する所有者を取得または設定します。 ツリーへ接続されていない場合はnullです。
public BuildOwner? Owner { get; set; }プロパティの値
Section titled “プロパティの値”Parent
Section titled “Parent”Elementツリー上の親を取得または設定します。 ルートまたはツリーから切り離されたElementではnullです。
public Element? Parent { get; set; }プロパティの値
Section titled “プロパティの値”RenderObject
Section titled “RenderObject”このElement以下で最初に見つかるRenderObjectを取得します。 対応するRenderObjectが存在しない場合はnullです。
public virtual RenderObject? RenderObject { get; protected set; }プロパティの値
Section titled “プロパティの値”親がこのElementへ割り当てた、親の子リストの中での位置を取得します。
public object? Slot { get; }プロパティの値
Section titled “プロパティの値”値の意味は親が決めます。複数の子を持つMultiChildRenderObjectElement%601は
IndexedSlotを、子が1つの親はnullを割り当てます。
RenderObjectを持たないElement(ComponentElementなど)は、自身のslotをそのまま子へ引き継ぎます。
RenderObjectElementは、自身のRenderObjectを祖先のRenderObjectへ挿入する位置としてこの値を使います。
Widget
Section titled “Widget”このElementが現在管理しているWidgetを取得または設定します。 ElementへWidgetが割り当てられる前はnullです。
public Widget? Widget { get; set; }プロパティの値
Section titled “プロパティの値”AttachRenderObject()
Section titled “AttachRenderObject()”このElement以下のRenderObjectを、祖先側のRenderObjectツリーへ接続します。
public virtual void AttachRenderObject()CompareTo(Element?)
Section titled “CompareTo(Element?)”Elementの再構築順序を、ツリーの深さと再構築要否に基づいて比較します。
public int CompareTo(Element? other)パラメーター
Section titled “パラメーター”other Element?
比較対象のElement。nullは指定できません。
このElementが先なら負の値、同順位なら0、後なら正の値。
Deactivate()
Section titled “Deactivate()”このElement以下のサブツリーをツリーから切り離す際に、依存していた InheritedElement の被依存リストから自身を除去する。 これを行わないと、破棄済みElementへDidChangeDependenciesが 呼ばれ続け、リークの原因になる。
protected virtual void Deactivate()DeactivateChild(Element)
Section titled “DeactivateChild(Element)”指定した子ElementをElementツリーとRenderObjectツリーから切り離し、依存関係を解除します。
protected void DeactivateChild(Element child)パラメーター
Section titled “パラメーター”child Element
切り離す直接の子Element。
DependOnInheritedWidgetOfExactType<T>()
Section titled “DependOnInheritedWidgetOfExactType<T>()”指定した型として登録された最も近い祖先のInheritedWidgetを取得し、 このコンテキストとの依存関係を登録します。
public T? DependOnInheritedWidgetOfExactType<T>() where T : InheritedWidgetT?
該当する祖先のInheritedWidget。該当する祖先が存在しない場合はnull。
型パラメーター
Section titled “型パラメーター”T
検索するInheritedWidgetの型。
取得したInheritedWidgetが更新を通知すると、このコンテキストに対応するElementは再構築を要求されます。
DetachRenderObject()
Section titled “DetachRenderObject()”このElement以下のRenderObjectをRenderObjectツリーから切り離します。
public virtual void DetachRenderObject()DidChangeDependencies()
Section titled “DidChangeDependencies()”このElementが依存するInheritedWidgetの値が変更されたことを通知します。
public virtual void DidChangeDependencies()基底実装はこのElementの再構築を要求します。
GetElementForInheritedWidgetOfExactType<T>()
Section titled “GetElementForInheritedWidgetOfExactType<T>()”指定した型として登録された最も近い祖先のInheritedWidgetに対応するElementを取得します。
public virtual InheritedElement? GetElementForInheritedWidgetOfExactType<T>() where T : InheritedWidget該当する祖先のInheritedElement。 該当する祖先が存在しない場合はnull。
型パラメーター
Section titled “型パラメーター”T
検索するInheritedWidgetの型。
このメソッドは取得したElementへの依存関係を登録しません。
InflateWidget(Widget, object?)
Section titled “InflateWidget(Widget, object?)”指定したWidgetに対応するElementを生成し、このElementの子としてマウントします。
protected Element InflateWidget(Widget newWidget, object? newSlot = null)パラメーター
Section titled “パラメーター”newWidget Widget
Elementを生成するWidget。
newSlot object?
子へ割り当てるslot。
生成してマウントされた子Element。
MarkNeedsBuild()
Section titled “MarkNeedsBuild()”このElementを次のビルド処理で再構築するよう要求します。
public void MarkNeedsBuild()Elementを再構築が必要な状態にし、所有者の再構築待ちリストへ登録します。 すでに再構築が必要な場合は、状態と予約を変更しません。
Mount(Element?)
Section titled “Mount(Element?)”このElementを指定した親の子としてElementツリーへ接続します。
public virtual void Mount(Element? parent)パラメーター
Section titled “パラメーター”parent Element?
接続先の親Element。ルートとして接続する場合はnull。
親から所有者と継承情報を引き継ぎ、深さを設定します。 このメソッドだけではWidgetの再構築やRenderObjectの接続は行いません。
PerformRebuild()
Section titled “PerformRebuild()”派生Elementが担当する再構築処理を実行します。
public abstract void PerformRebuild()Reassemble()
Section titled “Reassemble()”ホットリロード時に呼ばれ、このElement以下のサブツリー全体を再ビルド対象にする。 同じWidgetインスタンスによる差分スキップに関わらず、全ComponentElementのBuild()が再実行される。
public void Reassemble()Rebuild()
Section titled “Rebuild()”このElement固有の再構築処理を直ちに実行します。
public void Rebuild()通常のフレーム更新ではBuildScopeから呼び出されます。
Update(Widget)
Section titled “Update(Widget)”このElementが管理するWidgetを、更新後の構成へ置き換えます。
public virtual void Update(Widget newWidget)パラメーター
Section titled “パラメーター”newWidget Widget
このElementと同じ位置を引き継ぐ新しいWidget。
基底実装はWidgetの置き換えだけを行い、再構築を予約しません。
UpdateChild(Element?, Widget?)
Section titled “UpdateChild(Element?, Widget?)”既存の子Elementを新しいWidget構成へ更新し、再利用できない場合は子Elementを置き換えます。 子のslotには、RenderObjectを持たないElementなら自身のSlotを、 RenderObjectElementならnullを割り当てます。
protected Element? UpdateChild(Element? child, Widget? newWidget)パラメーター
Section titled “パラメーター”child Element?
現在の子Element。子が存在しない場合はnull。
newWidget Widget?
子として適用するWidget。子を取り除く場合はnull。
更新または生成された子Element。子を取り除いた場合はnull。
UpdateChild(Element?, Widget?, object?)
Section titled “UpdateChild(Element?, Widget?, object?)”既存の子Elementを新しいWidget構成とslotへ更新し、再利用できない場合は子Elementを置き換えます。
protected Element? UpdateChild(Element? child, Widget? newWidget, object? newSlot)パラメーター
Section titled “パラメーター”child Element?
現在の子Element。子が存在しない場合はnull。
newWidget Widget?
子として適用するWidget。子を取り除く場合はnull。
newSlot object?
子へ割り当てるslot。
更新または生成された子Element。子を取り除いた場合はnull。
UpdateInheritance()
Section titled “UpdateInheritance()”親Elementから、このElementで参照可能なInheritedWidgetのマップを引き継ぎます。
protected virtual void UpdateInheritance()UpdateSlot(object?)
Section titled “UpdateSlot(object?)”このElementのSlotを更新します。
protected virtual void UpdateSlot(object? newSlot)パラメーター
Section titled “パラメーター”newSlot object?
新しいslot。
UpdateSlotForChild(Element, object?)
Section titled “UpdateSlotForChild(Element, object?)”子Elementのslotを更新し、RenderObjectを持つ子孫へ届くまで引き継ぎます。
protected void UpdateSlotForChild(Element child, object? newSlot)パラメーター
Section titled “パラメーター”child Element
slotを更新する直接の子Element。
newSlot object?
新しいslot。
VisitChildren(Action<Element>)
Section titled “VisitChildren(Action<Element>)”このElementが直接管理する子Elementを列挙します。
public virtual void VisitChildren(Action<Element> visitor)パラメーター
Section titled “パラメーター”各子Elementに一度ずつ適用する処理。