ContextStorage class
A widget for creating a storage in the widget tree, accessible to child widgets through the InheritedWidget mechanism.
Use case: in your application you have a bottom tab navigation with global sections, and inside the bottom tabs there is a nested navigation with its own tabs. If you want to store some data for nested tabs, but clear the storage when switching global sections, then ContextStorage will help.
Example:
// Wrap nested tabs in context storage:
@override
Widget build(BuildContext context) {
return ContextStorage(
child: DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
title: Text('Home'),
bottom: TabBar(
tabs: [
// Tab definitions here...
],
),
),
body: TabBarView(
children: [
// Tab bodies here...
],
),
),
),
);
}
// Now inside the tab body widgets you can read
// the value from the storage...
_value = context.storage?.get<int>('counter') ?? 0;
// ...and write the value to the storage.
context.storage?.set('counter', _value);
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- ContextStorage
Constructors
- ContextStorage({Key? key, String? name, required Widget child})
-
Creates a ContextStorage widget.
const
Properties
- child → Widget
-
The widget below this widget in the tree.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- name → String?
-
Name for the storage, optional.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → ContextStorageState -
Creates the mutable state for this widget at a given location in the tree.
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of
DiagnosticsNode
objects describing this node's children.inherited -
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
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
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
of(
BuildContext context, [String? name]) → ContextStorageState? - Returns the closest ContextStorageState which encloses the given context.