bloc_infinite_list 0.0.1 bloc_infinite_list: ^0.0.1 copied to clipboard
Serves pre-made infinite list cubit and bloc to reduce boilerplate and provide concrete immutable bloc implementation.
How to use #
Cubit #
Default state #
class PlayerCubit extends DefaultInfiniteListCubit<Player> {
PlayerCubit(
PlayerRepository playerRepository,
) : super(
initialState: DefaultInfiniteListState(),
fetch: (page, size, cancelToken, state) =>
playerRepository.getAll(
page: page,
size: size,
cancelToken: cancelToken,
),
);
}
Custom state #
class PlayerState extends InfiniteListState<Player, PlayerState> {
final int id;
PlayerState({
super.infList,
required this.id,
});
...
}
class PlayerCubit extends InfiniteListCubit<Player, PlayerState> {
PlayerCubit(
PlayerRepository playerRepository,
) : super(
initialState: DefaultInfiniteListState(),
fetch: (page, size, cancelToken, state) =>
playerRepository.getAll(
page: page,
size: size,
cancelToken: cancelToken,
),
);
}
Bloc #
Default event & state #
class FoodBloc extends DefaultInfiniteListBloc<Food> {
...same as cubit
}
add(InfiniteListEvent.fetchNext());
Custom event & state #
abstract class FoodEvent extends InfiniteListEvent<Food> {
const FoodEvent();
}
abstract class FoodEventHadForLaunch extends InfiniteListEvent<Food> {
const FoodEventHadForLaunch();
}
---
class FoodBloc extends InfiniteListBloc<Food, FoodEvent, FoodState> {
FoodBloc(){
... other default events are automatically registered by library.
on<FoodEventHadForLaunch>(_onHadForLaunch)
}
_onHadForLaunch(event, emit);
}
add(InfiniteListEvent.fetchNext());
add(FoodEventHadForLaunch());