BloomPendingIndicator class final
A surgical, non-intrusive pending progress indicator that isolates background re-evaluation signals from the primary UI view tree.
Implements PreferredSizeWidget for direct embedding into AppBar.bottom, Scaffold, or top-level layout headers.
System Architectural Flow
┌────────────────────────────────────────────────────────────────────────┐
│ BloomPendingIndicator SWR Flow │
├────────────────────────────────────────────────────────────────────────┤
│ │
│ [ Upstream SWR: source.retained(pending: pendingCoupler) ] │
│ │ │
│ ┌────────────────────────────┴────────────────────────────┐ │
│ ▼ ▼ │
│ Primary Data (Bloom<T>) Coupler (Bloom<bool>)
│ │ │ │
│ ▼ ▼ │
│ [NewsListView] (Intact! Rebuild count: 0) [BloomPendingIndicator]│
│ (Rebuilds surgically!)
│ │
└────────────────────────────────────────────────────────────────────────┘
Key Invariants & Architectural Benefits
- Zero Primary Rebuilds: Renders background pending signals without invalidating or rebuilding the main data view subtree.
- Continuous Frame Driving: Driven by ComposedDriveFunctor (
composed.drive) for smooth 60/120fps progress animation without manual ticker controllers. - App Header Compatibility: Implements PreferredSizeWidget for drop-in embedding in AppBar.bottom.
Examples
final pendingCoupler = BloomCoupler<bool>.late();
late final newsFeedBloom = remoteFeed.retained(pending: pendingCoupler);
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Live Feed'),
bottom: BloomPendingIndicator(target: pendingCoupler.bloom),
),
body: composed((context, via) => NewsListView(via(newsFeedBloom))),
);
}
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- BloomWidget
- BloomPendingIndicator
- Implemented types
Constructors
-
BloomPendingIndicator({Key? key, required Bloom<
bool> target, double height = 2.0, Color? color, Color? backgroundColor, Widget builder(BuildContext context, bool isPending)?}) -
Creates a surgical isolated pending progress indicator.
const
Properties
- backgroundColor → Color?
-
Background track color (defaults to transparent
Color(0x00000000)).final - builder → Widget Function(BuildContext context, bool isPending)?
-
Optional custom builder for full indicator rendering customization.
final
- color → Color?
-
Foreground active progress indicator color (defaults to
Color(0xFF2196F3)).final - hashCode → int
-
The hash code for this object.
no setterinherited
- height → double
-
The height of the pending indicator (defaults to 2.0).
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- preferredSize → Size
-
The size this widget would prefer if it were otherwise unconstrained.
no setteroverride
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
target
→ Bloom<
bool> -
The target reactive node providing the pending boolean signal.
final
Methods
-
build(
BuildContext context, BloomVia via) → Widget -
Describes the part of the user interface represented by this widget, with explicit BloomVia tracking.
override
-
createElement(
) → BloomElement -
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, 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
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited