Made CommunitiesBloc state object one class, instead of multiple, to make searching and pagination easier.

This commit is contained in:
Faris Armoush
2025-06-16 16:47:47 +03:00
parent 6af96fadbd
commit 0260523121
2 changed files with 30 additions and 27 deletions

View File

@ -14,7 +14,7 @@ class CommunitiesBloc extends Bloc<CommunitiesEvent, CommunitiesState> {
CommunitiesBloc({ CommunitiesBloc({
required CommunitiesService communitiesService, required CommunitiesService communitiesService,
}) : _communitiesService = communitiesService, }) : _communitiesService = communitiesService,
super(CommunitiesInitial()) { super(const CommunitiesState()) {
on<LoadCommunities>(_onGetCommunity); on<LoadCommunities>(_onGetCommunity);
} }
@ -23,13 +23,28 @@ class CommunitiesBloc extends Bloc<CommunitiesEvent, CommunitiesState> {
Emitter<CommunitiesState> emit, Emitter<CommunitiesState> emit,
) async { ) async {
try { try {
emit(CommunitiesLoading()); emit(const CommunitiesState(status: CommunitiesStatus.loading));
final communities = await _communitiesService.getCommunity(event.param); final communities = await _communitiesService.getCommunity(event.param);
emit(CommunitiesLoaded(communities)); emit(
CommunitiesState(
status: CommunitiesStatus.success,
communities: communities,
),
);
} on APIException catch (e) { } on APIException catch (e) {
emit(CommunitiesFailure(e.message)); emit(
CommunitiesState(
status: CommunitiesStatus.failure,
errorMessage: e.message,
),
);
} catch (e) { } catch (e) {
emit(CommunitiesFailure(e.toString())); emit(
CommunitiesState(
status: CommunitiesStatus.failure,
errorMessage: e.toString(),
),
);
} }
} }
} }

View File

@ -1,30 +1,18 @@
part of 'communities_bloc.dart'; part of 'communities_bloc.dart';
sealed class CommunitiesState extends Equatable { enum CommunitiesStatus { initial, loading, success, failure }
const CommunitiesState();
@override class CommunitiesState extends Equatable {
List<Object?> get props => []; final CommunitiesStatus status;
}
final class CommunitiesInitial extends CommunitiesState {}
final class CommunitiesLoading extends CommunitiesState {}
final class CommunitiesLoaded extends CommunitiesState {
final List<CommunityModel> communities; final List<CommunityModel> communities;
final String? errorMessage;
const CommunitiesLoaded(this.communities); const CommunitiesState({
this.status = CommunitiesStatus.initial,
this.communities = const [],
this.errorMessage,
});
@override @override
List<Object?> get props => [communities]; List<Object?> get props => [status, communities, errorMessage];
}
final class CommunitiesFailure extends CommunitiesState {
final String message;
const CommunitiesFailure(this.message);
@override
List<Object?> get props => [message];
} }