AutomaticKeepAliveClientMixin<T extends StatefulWidget> mixin

A mixin with convenience methods for clients of AutomaticKeepAlive. It is used with State subclasses to manage keep-alive behavior in lazily built lists.

This mixin simplifies interaction with AutomaticKeepAlive by automatically sending KeepAliveNotifications when necessary. Subclasses must implement wantKeepAlive to indicate whether the widget should be kept alive and call updateKeepAlive whenever its value changes.

The mixin internally manages a KeepAliveHandle, which is used to notify the nearest AutomaticKeepAlive ancestor of changes in keep-alive requirements. AutomaticKeepAlive listens for KeepAliveNotifications sent by this mixin and dynamically wraps the subtree in a KeepAlive widget to preserve its state when it is no longer visible in the viewport.

Subclasses must implement wantKeepAlive, and their build methods must call super.build (though the return value should be ignored).

Then, whenever wantKeepAlive's value changes (or might change), the subclass should call updateKeepAlive.

The type argument T is the type of the StatefulWidget subclass of the State into which this class is being mixed.

The SliverChildBuilderDelegate and SliverChildListDelegate delegates, used with SliverList and SliverGrid, as well as the scroll view counterparts ListView and GridView, have an addAutomaticKeepAlives feature, which is enabled by default. This feature inserts AutomaticKeepAlive widgets around each child, which in turn configure KeepAlive widgets in response to KeepAliveNotifications.

The same addAutomaticKeepAlives feature is supported by TwoDimensionalChildBuilderDelegate and TwoDimensionalChildListDelegate.

This example demonstrates how to use the AutomaticKeepAliveClientMixin to keep the state of a widget alive even when it is scrolled out of view.
link

To create a local project with this code sample, run:
flutter create --sample=widgets.AutomaticKeepAliveClientMixin.1 mysample

See also:

  • AutomaticKeepAlive, which listens to messages from this mixin.
  • KeepAliveNotification, the notifications sent by this mixin.
  • KeepAlive which marks a child as needing to stay alive even when it's in a lazy list that would otherwise remove it.
Superclass constraints
Mixin applications
  1. @optionalTypeArgs

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
wantKeepAlive bool
Whether the current instance should be kept alive.
no setter
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.
override
deactivate() → void
Called when this object is removed from the tree.
override
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
didChangeDependencies() → void
Called when a dependency of this State object changes.
inherited
didUpdateWidget(covariant T oldWidget) → void
Called whenever the widget configuration changes.
inherited
dispose() → void
Called when this object is removed from the tree permanently.
inherited
initState() → void
Called when this object is inserted into the tree.
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
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
updateKeepAlive() → void
Ensures that any AutomaticKeepAlive ancestors are in a good state, by firing a KeepAliveNotification or triggering the KeepAliveHandle as appropriate.

Operators

operator ==(Object other) bool
The equality operator.
inherited