build_when library
A Flutter package that simplifies BlocBuilder usage with declarative filters.
This library provides three widgets that wrap BlocBuilder with smart
comparison logic:
BuildWhen- Rebuilds when a single filter value changesBuildWhenSome- Rebuilds when any of the specified filters changeBuildWhenAll- Rebuilds only when all of the specified filters change
All widgets automatically handle comparisons for primitives, null values, and collections (List, Map, Set) using Flutter's built-in equality functions.
Examples
BuildWhen - Single Filter
Rebuilds only when the specified filter value changes:
BuildWhen<UserBloc, UserState>(
filter: (state) => state.name,
builder: (context, state) => Text('Name: ${state.name}'),
)
BuildWhenSome - Any Filter Changes
Rebuilds when any of the specified filters change:
BuildWhenSome<UserBloc, UserState>(
filterSome: [
(state) => state.name,
(state) => state.age,
],
builder: (context, state) => Text('Name: ${state.name}, Age: ${state.age}'),
)
BuildWhenAll - All Filters Change
Rebuilds only when all of the specified filters change:
BuildWhenAll<UserBloc, UserState>(
filterAll: [
(state) => state.name,
(state) => state.age,
],
builder: (context, state) => Text('Name: ${state.name}, Age: ${state.age}'),
)
Comparison with BlocBuilder
Instead of writing verbose buildWhen logic:
BlocBuilder<UserBloc, UserState>(
buildWhen: (previous, current) => previous.name != current.name,
builder: (context, state) => Text('Name: ${state.name}'),
)
Use BuildWhen with a simple filter:
BuildWhen<UserBloc, UserState>(
filter: (state) => state.name,
builder: (context, state) => Text('Name: ${state.name}'),
)
Classes
-
BuildWhen<
B extends BlocBase< S> , S> - A widget that rebuilds only when the specified filter value changes.
-
BuildWhenAll<
B extends BlocBase< S> , S> - A widget that rebuilds only when all of the specified filters change.
-
BuildWhenSome<
B extends BlocBase< S> , S> - A widget that rebuilds when any of the specified filters change.
Typedefs
-
WhenChangeFilter<
S> = Object? Function(S state) - A function that extracts a value from a state to monitor for changes.