RaiiStateMixin<T extends StatefulWidget> mixin
A mixin that implements RaiiLifecycleAware for StatefulWidget states.
This mixin provides lifecycle management capabilities to widget states, automatically handling initialization and disposal of registered lifecycles in sync with the widget's lifecycle.
The lifecycle initialization is deferred until didChangeDependencies to ensure that inherited dependencies are available. This is particularly important when lifecycles need access to inherited widgets or other context-dependent resources.
Important: When using this mixin with TickerProviderStateMixin or SingleTickerProviderStateMixin, you must declare them before this mixin:
// Correct order:
class MyWidgetState extends State<MyWidget>
with TickerProviderStateMixin, RaiiStateMixin {
// ...
}
// Incorrect order - will cause incorrect resources disposal:
class MyWidgetState extends State<MyWidget>
with RaiiStateMixin, TickerProviderStateMixin {
// ...
}
Example usage:
class MyWidgetState extends
with TickerProviderStateMixin, RaiiStateMixin {
late final _animationController = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 300),
).withLifecycle(this);
@override
void initLifecycle() {
super.initLifecycle();
_animationController.addListenerWithLifecycle(
this,
() {
// Update state when animation happens.
},
);
}
// ...
}
- Superclass constraints
- State<
T>
- State<
- Implemented types
Properties
- context → BuildContext
-
The location in the tree where this widget builds.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- mounted → bool
-
Whether this State object is currently in a tree.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- widget → T
-
The current configuration.
no setterinherited
Methods
-
activate(
) → void -
Called when this object is reinserted into the tree after having been
removed via deactivate.
inherited
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
inherited
-
deactivate(
) → void -
Called when this object is removed from the tree.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
didChangeDependencies(
) → void -
Called when a dependency of this State object changes.
override
-
didUpdateWidget(
covariant T oldWidget) → void -
Called whenever the widget configuration changes.
inherited
-
dispose(
) → void -
Called when this object is removed from the tree permanently.
override
-
disposeLifecycle(
) → void -
Disposes of any resources held by this object.
override
-
initLifecycle(
) → void -
Initializes the lifecycle of this object.
override
-
initState(
) → void -
Called when this object is inserted into the tree.
inherited
-
isLifecycleMounted(
) → bool -
Returns whether this object's lifecycle is currently mounted.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
reassemble(
) → void -
Called whenever the application is reassembled during debugging, for
example during hot reload.
inherited
-
registerLifecycle(
RaiiLifecycle lifecycle) → void -
Registers a RaiiLifecycle object to be managed by this container.
override
-
setState(
VoidCallback fn) → void -
Notify the framework that the internal state of this object has changed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringShort(
) → String -
A brief description of this object, usually just the runtimeType and the
hashCode.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited