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.
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
- State<
T>
- State<
- Mixin applications
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