bloomBUILD•SHIP•BLOOM
.md
Queries

Queries & SWR Caching

Declarative server state management inspired by TanStack Query and SWR for Flutter.

Defining Queries

lib/features/feed/feed_controller.dart
dart
// lib/features/feed/feed_controller.dart
import 'package:bloom_framework/bloom.dart';
import '../services/api_service.dart';

class FeedController extends BloomController {
  late final feedQuery = createQuery<List<Post>>(
    queryKey: ['feed', 'latest'],
    queryFn: () => inject<ApiService>().fetchFeed(),
    // Keep data fresh in memory for 2 minutes before background refetch
    staleTime: const Duration(minutes: 2),
    // Garbage collect unused cache keys after 30 minutes of no subscribers
    gcTime: const Duration(minutes: 30),
    // Auto refetch when window or mobile app regains focus
    refetchOnWindowFocus: true,
  );

  void invalidateFeed() {
    feedQuery.invalidate();
  }
}