BloomQuery<T> class
A reactive asynchronous query with automatic caching, stale-while-revalidate, and deduplication.
Subscribes to global BloomData cache invalidation events and exposes reactive signals for data, status, error, isFetching, and isStale.
Example:
final userQuery = BloomQuery<User>(
key: ['user', 42],
fetch: () => api.fetchUser(42),
staleTime: const Duration(minutes: 5),
);
print(userQuery.data.value?.name);
Constructors
-
BloomQuery({required List key, required QueryFetcher<
T> fetch, Duration staleTime = const Duration(minutes: 5), Duration cacheTime = const Duration(minutes: 30), bool enabled = true, int retry = 2, Duration retryDelay = const Duration(milliseconds: 500)}) - Creates a BloomQuery with cache key, fetcher, and configuration options.
Properties
- cacheTime → Duration
-
Maximum duration to keep cached data in memory before garbage collection.
final
-
data
→ ReadonlySignal<
T?> -
Reactive signal containing the current data value
T, ornull.no setter - enabled → bool
-
Whether this query automatically fetches on initialization (defaults to true).
final
-
error
→ ReadonlySignal<
Object?> -
Reactive signal containing the error object if the query failed, or
null.no setter -
fetch
→ QueryFetcher<
T> -
Asynchronous function that fetches fresh data from network or database.
final
- hasData → bool
-
Whether valid data is currently available in this query.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- isError → bool
-
Whether the query has failed with an error.
no setter
-
isFetching
→ ReadonlySignal<
bool> -
Reactive signal indicating whether a network fetch is actively occurring in background.
no setter
- isLoading → bool
-
Whether the query is currently performing its initial loading fetch.
no setter
-
isStale
→ ReadonlySignal<
bool> -
Reactive signal indicating whether the current data is considered stale.
no setter
- isSuccess → bool
-
Whether the query has resolved successfully with cached or fresh data.
no setter
- key → List
-
Unique cache key identifying this query.
final
- retry → int
-
Number of retry attempts on network/fetch failure (defaults to 2).
final
- retryDelay → Duration
-
Base delay duration between retry attempts (defaults to 500ms).
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- staleTime → Duration
-
Duration after which cached data is considered stale and revalidated on access.
final
-
status
→ ReadonlySignal<
QueryStatus> -
Reactive signal containing the current query status.
no setter
Methods
-
dispose(
) → void - Disposes this query instance, unregisters invalidation listeners, and releases cache slots.
-
invalidate(
) → void - Marks this query as invalidated and triggers an immediate background refetch.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
refetch(
) → Future< T?> - Manually triggers a fresh background revalidation.
-
setData(
T newData) → void - Overrides data directly in memory cache and notifies all active observers.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited