smart_query library
Async server-state management for Flutter — caching, deduplication, background sync, optimistic updates, and pagination.
Inspired by TanStack Query (React Query), built idiomatically for Flutter.
Quick Start
// 1. Wrap your app
void main() {
runApp(
QueryClientProvider(
client: QueryClient(),
child: MyApp(),
),
);
}
// 2. Use QueryBuilder
QueryBuilder<List<User>>(
queryKey: ['users'],
fetcher: () => api.getUsers(),
builder: (context, result) {
if (result.isLoading) return CircularProgressIndicator();
if (result.isError) return Text('Error: ${result.error}');
return ListView(
children: result.data!.map((u) => Text(u.name)).toList(),
);
},
)
Classes
- ConnectivityObserver
- Abstract interface for monitoring network connectivity.
-
InfiniteQueryBuilder<
TPage, TPageParam> - A widget that manages infinite scroll / "Load more" patterns.
-
InfiniteQueryData<
TPage> - Holds the accumulated pages for an infinite query.
-
InfiniteQueryResult<
TPage> - Result exposed to the builder of InfiniteQueryBuilder.
-
MutationBuilder<
TData, TVariables> - A widget that manages mutation state and rebuilds when it changes.
-
MutationOptions<
TData, TVariables> - Configuration options for a mutation.
-
MutationResult<
TData, TVariables> - Immutable result of a mutation.
-
PaginatedQueryBuilder<
T> - A convenience widget for classic page-based pagination.
-
QueryBuilder<
T> - A widget that fetches and caches data, rebuilding when the query state changes.
- QueryClient
- The central entry point for all query and cache operations.
- QueryClientInherited
- InheritedWidget that holds the QueryClient.
- QueryClientProvider
- Provides a QueryClient to the widget subtree.
- QueryDefaults
- Global default options for all queries managed by a QueryClient.
-
QueryOptions<
T> - Configuration options for a query.
-
QueryResult<
T> - Immutable result of a query, containing data, error, and status information.
Enums
- ConnectivityStatus
- Network connectivity status.
- MutationStatus
- Status states for a mutation's lifecycle.
- QueryStatus
- Status states for a query's lifecycle.
Typedefs
-
MutatorFn<
TData, TVariables> = Future< TData> Function(TVariables variables) - Type alias for a mutation function.
-
OnMutateFn<
TVariables> = FutureOr Function(TVariables variables) - Type alias for the onMutate callback.
-
OnMutationErrorFn<
TVariables> = FutureOr< void> Function(Object error, TVariables variables, dynamic context) - Type alias for the onError callback of a mutation.
-
OnMutationSettledFn<
TData, TVariables> = FutureOr< void> Function(TData? data, Object? error, TVariables variables, dynamic context) - Type alias for the onSettled callback of a mutation.
-
OnMutationSuccessFn<
TData, TVariables> = FutureOr< void> Function(TData data, TVariables variables, dynamic context) - Type alias for the onSuccess callback of a mutation.
-
PagedQueryFetcher<
T, TPageParam> = Future< T> Function(TPageParam pageParam) - Type alias for a paginated query fetcher function.
-
QueryFetcher<
T> = Future< T> Function() - Type alias for a query fetcher function.
- RetryDelayFn = Duration Function(int attemptIndex)
- Type alias for retry delay calculation.
- RetryWhenFn = bool Function(Object error)
- Type alias for conditional retry.