Files
syncrow-web/lib/pages/spaces_management/bloc/space_management_bloc.dart
2024-09-05 12:11:35 +04:00

61 lines
1.7 KiB
Dart

import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/model/space_model.dart';
// Events
abstract class SpaceEvent extends Equatable {
@override
List<Object> get props => [];
}
class LoadSpaces extends SpaceEvent {}
class SelectSpace extends SpaceEvent {
final String selectedSpace;
SelectSpace(this.selectedSpace);
@override
List<Object> get props => [selectedSpace];
}
// States
abstract class SpaceState extends Equatable {
@override
List<Object> get props => [];
}
class SpaceInitial extends SpaceState {}
class SpaceLoaded extends SpaceState {
final List<SpaceModel> spaces;
final String selectedSpace;
SpaceLoaded({required this.spaces, required this.selectedSpace});
@override
List<Object> get props => [spaces, selectedSpace];
}
// Bloc
class SpacesManagementBloc extends Bloc<SpaceEvent, SpaceState> {
SpacesManagementBloc() : super(SpaceInitial()) {
on<LoadSpaces>((event, emit) {
final List<SpaceModel> spaces = [
SpaceModel(communityName: 'Downtown Dubai', subSpaces: ['Sub Space 1', 'Sub Space 2']),
SpaceModel(communityName: 'Dubai Creek Harbour', subSpaces: ['Sub Space 1', 'Sub Space 2']),
SpaceModel(communityName: 'Dubai Hills Estate', subSpaces: ['Sub Space 1', 'Sub Space 2']),
];
emit(SpaceLoaded(spaces: spaces, selectedSpace: spaces[0].communityName));
});
on<SelectSpace>((event, emit) {
if (state is SpaceLoaded) {
final loadedState = state as SpaceLoaded;
emit(SpaceLoaded(spaces: loadedState.spaces, selectedSpace: event.selectedSpace));
}
});
}
}