rpcQuery<TInput, TOutput> function
BloomQuery<TOutput>
rpcQuery<TInput, TOutput>(
- BloomRpcClient client,
- BloomRpcContract<
TInput, TOutput> contract, - TInput input, {
- Map<
String, dynamic> ? pathParams, - Map<
String, dynamic> ? queryParameters, - Map<
String, String> ? headers, - Duration staleTime = const Duration(minutes: 5),
- Duration cacheTime = const Duration(minutes: 30),
- bool enabled = true,
- TOutput? initialData,
- List? customKey,
- Duration? timeout,
Creates a reactive BloomQuery bound to an RPC contract and input.
Automatically derives a normalized cache key via BloomRpcContract.cacheKey and
executes client.call during fetches, providing automatic caching, request
deduplication, background revalidation, and reactive signal state (BloomQuery.data,
BloomQuery.status, BloomQuery.error).
final userQuery = rpcQuery<void, User>(
client,
getUserContract,
null,
pathParams: {'id': 'user-123'},
staleTime: Duration(minutes: 2),
);
BloomNode renderUser() => Live(() => switch (userQuery.status.value) {
QueryStatus.loading => P(text: 'Loading user...'),
QueryStatus.error => P(text: 'Error: ${userQuery.error.value}'),
QueryStatus.success => H1(text: userQuery.data.value?.name ?? 'Anonymous'),
QueryStatus.idle => P(text: 'Idle'),
});
See also:
- BloomQuery, the underlying reactive query coordinator.
- rpcMutation, for state-modifying mutations.
Implementation
BloomQuery<TOutput> rpcQuery<TInput, TOutput>(
BloomRpcClient client,
BloomRpcContract<TInput, TOutput> contract,
TInput input, {
Map<String, dynamic>? pathParams,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
Duration staleTime = const Duration(minutes: 5),
Duration cacheTime = const Duration(minutes: 30),
bool enabled = true,
TOutput? initialData,
List<dynamic>? customKey,
Duration? timeout,
}) {
final key = customKey ??
contract.cacheKey(
input,
pathParams: pathParams,
queryParameters: queryParameters,
);
return BloomQuery<TOutput>(
key: key,
fetch: () => client.call(
contract,
input,
pathParams: pathParams,
queryParameters: queryParameters,
headers: headers,
timeout: timeout,
),
staleTime: staleTime,
cacheTime: cacheTime,
enabled: enabled,
initialData: initialData,
);
}