コンテンツにスキップ

StatefulElement<T> クラス

StatefulWidgetと、そのライフサイクルを担うStateを結び付けて管理するElementです。

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

public class StatefulElement<T> : ComponentElement, IBuildContext, IComparable<Element> where T : StatefulWidget<T>

T

このElementが管理するStatefulWidgetの型。

object ← Element ← ComponentElement ← StatefulElement<T>

IBuildContext, IComparable<Element>

ComponentElement.Mount(Element?), ComponentElement.FirstBuild(), ComponentElement.PerformRebuild(), ComponentElement.Build(), ComponentElement.VisitChildren(Action<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)

このElementが所有するStateを取得します。

public State<T> State { get; }

State<T>

Stateはマウント時に生成され、Elementがツリーから恒久的に外れるまで保持されます。

所有するStateから子Widgetを構築します。

public override Widget Build()

Widget

Stateが構築した子Widget。

このElement(=State)がツリーから恒久的に取り除かれるときに呼ばれる。 子を先に非活性化してから自身のStateを破棄することで、深い側から順に解放される。 再活性プールを持たない現状のツリーでは Deactivate が終端(unmount相当)となる。

protected override void Deactivate()

依存するInheritedWidgetの変更を次の再構築時にStateへ通知するよう予約します。

public override void DidChangeDependencies()

Stateの初期化と初回の依存変更通知を行った後、最初のWidget構築を実行します。

public override void FirstBuild()

WidgetからStateを生成して相互に関連付けた後、Elementツリーへ接続します。

public override void Mount(Element? parent)

parent Element?

接続先の親Element。ルートとして接続する場合はnull。

保留中の依存変更をStateへ通知した後、Stateから子Widgetを再構築します。

public override void PerformRebuild()

管理するStatefulWidgetを置き換え、Stateへ更新前のWidgetを通知して直ちに再構築します。

public override void Update(Widget newWidget)

newWidget Widget

既存のStateを引き継ぐ新しいStatefulWidget。

StatefulWidget<T>, State<T>