ScopeProvider class
Class that propagate the Scope
down the tree.
Example of use:
class MyScopedClass {
int get state => 10;
}
// Define a koin module with a scope for `ScopePage`.
// Here, the `ScopePage` scope is being defined, which contains a definition
// for `MyScopedClass`.
final simpleModule = Module()
..scopeOne<MyScopedClass, ScopePage>((_) => MyScopedClass());
class ScopePage extends StatefulWidget {
@override
_ScopePageState createState() => _ScopePageState();
}
class _ScopePageState extends State<ScopePage> with ScopeStateMixin {
@override
Widget build(BuildContext context) {
final counterScoped = currentScope.get<MyScopedClass>();
return Scaffold(
appBar: AppBar(
actions: <Widget>[
IconButton(
icon: Text("ScopeProvider", overflow: TextOverflow.clip),
onPressed: () {
// Use ScopeProvider to propagate the scope to the widget tree.
// That allow to pass the current scope to another route.
Navigator.push(context, MaterialPageRoute(builder: (c) {
return ScopeProvider(
scope: currentScope, child: UseScopePage());
}));
},
),
],
),
body: Center(
child: Text(counterScoped.state.toString()),
),
);
}
}
//The second page that uses the scope of the widget above.
class UseScopePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final counterScoped = context.scope.get<MyScopedClass>();
return Scaffold(
body: Center(
child: Text(counterScoped.state.toString()),
),
);
}
}
For more information see InheritedWidget
.
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- ProxyWidget
- InheritedWidget
- ScopeProvider
- Available Extensions
Constructors
- ScopeProvider({Key? key, required Scope scope, required Widget child})
-
const
Properties
- child → Widget
-
The widget below this widget in the tree.
finalinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- scope → Scope
-
final
Methods
-
createElement(
) → InheritedElement -
Inflates this configuration to a concrete instance.
inherited
-
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
-
updateShouldNotify(
covariant ScopeProvider old) → bool -
Whether the framework should notify widgets that inherit from this widget.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
of(
BuildContext context) → ScopeProvider