ReactterProvider<T extends ReactterContext> class
A StatelessWidget that provides a ReactterContext's instance of T
to widget tree that can be access through the BuildContext.
ReactterProvider<AppContext>(
() => AppContext(),
builder: (appContext, context, child) {
return Text("StateA: ${appContext.stateA.value}");
},
)
Use id property for create a different instances of ReactterContext.
CONSIDER: Dont's use ReactterContext with constructor parameters to prevent conflicts.
CONSIDER Use child property to pass a Widget that you want to build it once. The ReactterProvider pass it through the builder callback, so you can incorporate it into your build:
ReactterProvider<AppContext>(
() => AppContext(),
child: Text("This widget build only once"),
builder: (context, child) {
final appContext = context.watch<AppContext>();
return Column(
children: [
Text("state: ${appContext.stateA.value}"),
child,
],
);
},
)
NOTE: ReactterProvider is a "scoped". This mean that ReactterProvider exposes the ReactterContext defined on first parameter(InstanceBuilder) through the BuildContext in the widget subtree:
ReactterProvider<AppContext>(
() => AppContext(),
builder: (appContext, context, child) {
return OtherWidget();
}
);
class OtherWidget extends StatelessWidget {
...
Widget build(context) {
final appContext = context.use<AppContext>();
return Column(
children: [
Text("StateA: ${appContext.stateA.value}"),
Builder(
builder: (context){
context.watch<AppContext>((ctx) => [ctx.stateB]);
return Text("StateB: ${appContext.stateB.value}");
},
),
],
);
}
}
In the above example, stateA remains static while the Builder is rebuilt according to the changes in stateB. Because the Builder's context kept in watch of stateB.
See also:
- ReactterContext, a base-class that allows to manages the ReactterHooks.
- Inheritance
Constructors
-
ReactterProvider.new(ContextBuilder<
T> instanceBuilder, {Key? key, String? id, bool init = false, Widget? child, InstanceBuilder<T> ? builder}) -
const
Properties
-
builder
→ InstanceBuilder<
T> ? -
Method which has the render logic
final
- child → Widget
-
The widget below this widget in the tree.
finalinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- id → String?
-
final
- init → bool
-
Create the instance defined
on firts parameter
_instanceBuilder
when UseContext is called.final -
instanceBuilder
→ ContextBuilder<
T> -
Create a instances of ReactterContext class
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- runtimeType → Type
-
This is a hack to save it and find it with the
id
distinction in_inheritedWidgets
ofElement
using the helper functions ofBuildContext
likegetElementForInheritedWidgetOfExactType
.no setteroverride
Methods
-
build(
BuildContext context) → Widget -
createElement(
) → ReactterProviderElement< ReactterContext?> -
Inflates this configuration to a concrete instance.
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, int wrapWidth = 65}) → 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 InheritedWidget oldWidget) → bool -
Whether the framework should notify widgets that inherit from this widget.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
contextOf<
T extends ReactterContext?> (BuildContext context, {String? id, ListenStates< T> ? listenStates, ListenHooks<T> ? listenHooks, bool listen = true}) → T -
Returns an instance of
T
and sets theBuildContext
to listen for when it should be re-rendered.