JuiceWidgetState<TBloc extends JuiceBloc<BlocState>, TWidget extends StatefulWidget> class abstract

Base class for creating stateful widgets that reactively respond to Juice bloc state changes.

JuiceWidgetState manages the connection between a stateful widget and a bloc, providing a structured way to handle state changes, control widget rebuilds, and manage widget lifecycle.

Type Parameters:

  • TBloc - The type of bloc this widget observes
  • TWidget - The type of the stateful widget

Example usage:

class MyWidget extends StatefulWidget {
  @override
  State<MyWidget> createState() => MyWidgetState();
}

class MyWidgetState extends JuiceWidgetState<MyBloc, MyWidget> {
  @override
  Widget onBuild(BuildContext context, StreamStatus status) {
    return Column(
      children: [
        Text(bloc.state.data),
        if (status is Waiting)
          CircularProgressIndicator(),
      ],
    );
  }
}
Inheritance

Constructors

JuiceWidgetState({BlocDependencyResolver? resolver, Set<String> groups = const {"*"}, Object? scope})
Creates a JuiceWidgetState with optional dependency resolver and rebuild groups.

Properties

bloc → TBloc
The bloc instance this widget observes.
no setter
context → BuildContext
The location in the tree where this widget builds.
no setterinherited
groups → Set<String>
Groups that control when this widget rebuilds. Default {'*'} rebuilds on emissions sent to EVERY widget (rebuildAlways, which is also what an emit without groupsToRebuild sends) — NOT on emissions targeted at named groups. Name the groups this widget shows to rebuild on those. This set is unmodifiable to preserve immutability.
final
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
scope → Object?
Optional scope key for resolving scoped bloc instances.
final
widget → TWidget
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
close(BuildContext context) → Widget
Called when the bloc stream is closed. Override to handle cleanup or show final UI state.
deactivate() → void
Called when this object is removed from the tree.
inherited
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 TWidget oldWidget) → void
Called whenever the widget configuration changes.
inherited
dispose() → void
Called when this object is removed from the tree permanently.
override
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
onBuild(BuildContext context, StreamStatus<BlocState> status) → Widget
Main build method to override. Constructs widget UI based on current status.
onInit() → void
Called when the widget is first initialized. Override to add initialization logic.
onStateChange(StreamStatus<BlocState> status) → bool
Called for each state change to determine if widget should rebuild. Return false to prevent rebuild for this state change.
prepareForUpdate(StreamStatus<BlocState> status) → void
Called when the stream emits a new status that passed onStateChange. Override to prepare widget for the upcoming rebuild.
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

Operators

operator ==(Object other) → bool
The equality operator.
inherited