The untracked raw-read accessor interface for the Bloom reactive DAG engine.
Under the Explicit Dependency Manifest architecture, reactive nodes (Bloom) are opaque DAG handles that do not expose direct value getters on their public instance surface.
BloomUntracked serves as the explicit gateway for untracked, zero-overhead raw reads outside reactive tracking scopes (or inside derivations when a dependency should intentionally not be tracked).
System Architectural Symmetry
┌──────────────────────────────────────┬──────────────────────────────────────┐
│ Tracked Access (Scoped BloomVia) │ Untracked Access (Global Functor) │
├──────────────────────────────────────┼──────────────────────────────────────┤
│ via(node) (Tracks + Data) │ untracked(node) (No-op + Data) │
│ via.state(node) (Tracks + State) │ untracked.state(node)(No-op + State) │
└──────────────────────────────────────┴──────────────────────────────────────┘
Key Invariants & Architectural Benefits
- Zero Tracking Overhead: Reading via untracked executes a direct field dereference without querying or mutating ambient scope stacks.
- AI & Linter Determinism: By eliminating getter properties on Bloom, AI coding assistants and developers cannot inadvertently introduce "silent unreactivity" bugs by accessing values without explicit routing.
- Fail-Fast Extraction: Reading untracked on a node in Empty or Error state throws BloomSnapshotExtractionException, preserving fail-fast safety.
Examples
final counter = blooming(0);
final doubled = computed((via) => via(counter.bloom) * 2);
// 1. Imperative untracked read in tests / event handlers:
print(untracked(doubled)); // 0
// 2. Untracked state inspection:
final state = untracked.state(counter.bloom);
if (state.hasData) {
print('Data: ${state.data}');
}
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
call<
T> (Bloom< T> bloom) → T -
Reads the current value of
bloomuntracked. -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
state<
T> (Bloom< T> bloom) → BloomState<T> - Returns an untracked live view of the node's 3-phase BloomState.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited