ReactiveProvider<T extends ChangeNotifier> class
A widget that provides a ReactiveNotifier or ChangeNotifier to its descendants.
Uses InheritedNotifier under the hood for efficient rebuilds.
Descendants can access the notifier using ReactiveProvider.of or
the BuildContext extension context.reactive.
Basic Usage
// Provide at the top of your widget tree
ReactiveProvider<ReactiveNotifier<int>>(
notifier: counter,
child: const MyApp(),
)
// Access anywhere in the subtree
final counter = ReactiveProvider.of<ReactiveNotifier<int>>(context);
// or
final counter = context.reactive<ReactiveNotifier<int>>();
Disable Auto Dispose
By default, notifiers are automatically disposed when the provider is removed.
Set autoDispose: false if you manage the notifier lifecycle elsewhere:
ReactiveProvider<ReactiveNotifier<int>>(
notifier: counter,
autoDispose: false, // Don't dispose, managed elsewhere
child: const MyApp(),
)
Multiple Providers
ReactiveProvider<ReactiveNotifier<User>>(
notifier: userNotifier,
child: ReactiveProvider<ReactiveNotifier<Settings>>(
notifier: settingsNotifier,
child: const MyApp(),
),
)
See also:
- ReactiveNotifier for the reactive value holder
- AsyncReactiveNotifier for async operations
- Reactive for building UI that responds to changes
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- ReactiveProvider
- Available extensions
Constructors
- ReactiveProvider({Key? key, required T notifier, required Widget child, bool autoDispose = true})
-
Creates a ReactiveProvider that provides
notifierto descendants.const
Properties
- alignBottomCenter → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the bottom center of its parent.no setter - alignBottomEnd → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the bottom end corner of its parent.no setter - alignBottomStart → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the bottom start corner of its parent.no setter - alignCenter → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the center of its parent.no setter - alignEndCenter → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the start center of its parent.no setter - alignStartCenter → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the start center of its parent.no setter - alignTopCenter → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the top center of its parent.no setter - alignTopEnd → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the top end corner of its parent.no setter - alignTopStart → Widget
-
Available on Widget, provided by the AlignmentExtension extension
Aligns the widget to the top start corner of its parent.no setter - autoDispose → bool
-
Whether to automatically dispose the notifier when this provider
is removed from the tree.
final
- center → Widget
-
Available on Widget, provided by the CenterExtension extension
Wraps the widget with a Center widget.no setter - child → Widget
-
The widget below this provider 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
- ltr → Widget
-
Available on Widget, provided by the DirectionalityExtension extension
Wraps the current widget in a Directionality widget with TextDirection.ltr.no setter - notifier → T
-
The notifier to provide to descendants.
final
- rtl → Widget
-
Available on Widget, provided by the DirectionalityExtension extension
Wraps the current widget in a Directionality widget with TextDirection.rtl.no setter - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
alignedBox(
{double? width, double? height, AlignmentDirectional? alignment}) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox with specified width, height, and alignment. -
animatedOpacity(
bool isVisible, {Duration duration = const Duration(milliseconds: 300)}) → AnimatedOpacity -
Available on Widget, provided by the VisibilityExtension extension
Wraps the widget with an AnimatedOpacity widget to animate its visibility. -
box(
{double? width, double? height}) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox with both width and height. -
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → State< ReactiveProvider< T> > -
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
-
expandBox(
) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox that fills the available space in both dimensions. -
expanded(
{int flex = 1}) → Widget -
Available on Widget, provided by the FlexExtensions extension
Wraps the current widget with anExpandedwidget, allowing it to expand and fill available space in a flex container (e.g.,Row,Column). -
flexible(
{int flex = 1, FlexFit fit = FlexFit.loose}) → Widget -
Available on Widget, provided by the FlexExtensions extension
Wraps the current widget with aFlexiblewidget, allowing it to take flexible space within a flex container, but with more control over its layout behavior. -
flexibleBox(
{required double width, double? height}) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox with a flexible width and height. -
height(
double height) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox with a specified height. -
hide(
bool isHidden) → Widget -
Available on Widget, provided by the VisibilityExtension extension
Conditionally hides the widget by replacing it with an empty widget (SizedBox.shrink). -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
paddedBox(
{double? width, double? height, EdgeInsets? padding}) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox with padding around the child widget. -
paddingAll(
double value) → Widget -
Available on Widget, provided by the PaddingExtension extension
Wraps the widget with a Padding widget applying uniform padding on all sides. -
paddingOnly(
{double top = 0, double bottom = 0, double start = 0, double end = 0}) → Widget -
Available on Widget, provided by the PaddingExtension extension
Wraps the widget with a Padding widget using the specified EdgeInsets. -
paddingSymmetric(
{double vertical = 0, double horizontal = 0}) → Widget -
Available on Widget, provided by the PaddingExtension extension
Wraps the widget with a Padding widget applying symmetric padding. -
positioned(
{double? top, double? bottom, double? start, double? end, double? width, double? height}) → Widget -
Available on Widget, provided by the PositionedExtension extension
Wraps the widget with a PositionedDirectional widget. -
positionedDirectional(
{required TextDirection textDirection, double? top, double? bottom, double? start, double? end, double? width, double? height}) → Widget -
Available on Widget, provided by the PositionedExtension extension
Wraps the widget with a Positioned.directional widget. -
positionedFill(
{double? top, double? bottom, double? left, double? right}) → Widget -
Available on Widget, provided by the PositionedExtension extension
Wraps the widget with a Positioned.fill widget. -
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
-
visible(
bool isVisible) → Widget -
Available on Widget, provided by the VisibilityExtension extension
Wraps the widget with a Visibility widget to conditionally show or hide it. -
width(
double width) → Widget -
Available on Widget, provided by the SizedBoxExtension extension
Creates a SizedBox with a specified width.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
maybeOf<
T extends ChangeNotifier> (BuildContext context) → T? -
Obtains the nearest ReactiveProvider of the given type
Tand returns its notifier, or null if not found. -
of<
T extends ChangeNotifier> (BuildContext context) → T -
Obtains the nearest ReactiveProvider of the given type
Tand returns its notifier.