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
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