fasq_bloc 0.2.4+3 copy "fasq_bloc: ^0.2.4+3" to clipboard
fasq_bloc: ^0.2.4+3 copied to clipboard

Bloc/Cubit adapter for FASQ (Flutter Async State Query) - async state management with Bloc

fasq_bloc #

Bloc/Cubit adapter for FASQ (Flutter Async State Query).

Bring the power of caching, auto-refetching, and offline mutations to your Bloc-based applications.

Current Version: 0.2.4+1

πŸ“š Documentation #

For full documentation and API reference, visit:
https://fasq.shafi.dev/adapters/bloc

✨ Features #

  • 🧊 QueryCubit: A pre-built Cubit for handling async queries with caching.
  • ♾️ InfiniteQueryCubit: Infinite scrolling and pagination made easy.
  • πŸ”„ MutationCubit: Handle server mutations with optimistic updates.
  • πŸ”€ MultiQueryBuilder: Execute multiple queries in parallel.
  • ⚑ Bloc Integration: Seamlessly works with BlocBuilder, BlocConsumer, and BlocProvider.

πŸ“¦ Installation #

dependencies:
  fasq_bloc: ^0.2.4+1

πŸš€ Quick Start #

1. Create a QueryCubit #

Extend QueryCubit and define your query logic.

class UsersQueryCubit extends QueryCubit<List<User>> {
  @override
  String get key => 'users';

  @override
  Future<List<User>> Function() get queryFn => () => api.fetchUsers();

  @override
  QueryOptions? get options => QueryOptions(
    staleTime: Duration(minutes: 5), // Data stays fresh for 5 mins
  );
}

2. Use in UI #

Use BlocProvider and BlocBuilder as you normally would.

class UsersScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (_) => UsersQueryCubit(),
      child: BlocBuilder<UsersQueryCubit, QueryState<List<User>>>(
        builder: (context, state) {
          if (state.isLoading) return CircularProgressIndicator();
          if (state.hasError) return Text('Error: ${state.error}');
          
          return ListView.builder(
            itemCount: state.data!.length,
            itemBuilder: (context, index) => Text(state.data![index].name),
          );
        },
      ),
    );
  }
}

🧩 Other Components #

  • MutationCubit: For POST/PUT/DELETE operations.
  • InfiniteQueryCubit: For paginated lists.
  • MultiQueryBuilder: For fetching multiple independent queries.

See the main documentation for advanced usage like optimistic updates and cache invalidation.

πŸ“„ License #

MIT

1
likes
150
points
58
downloads

Publisher

verified publishershafi.dev

Weekly Downloads

Bloc/Cubit adapter for FASQ (Flutter Async State Query) - async state management with Bloc

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

bloc, fasq, flutter, flutter_bloc

More

Packages that depend on fasq_bloc