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 get props => []; } class LoadSpaces extends SpaceEvent {} class SelectSpace extends SpaceEvent { final String selectedSpace; SelectSpace(this.selectedSpace); @override List get props => [selectedSpace]; } // States abstract class SpaceState extends Equatable { @override List get props => []; } class SpaceInitial extends SpaceState {} class SpaceLoaded extends SpaceState { final List spaces; final String selectedSpace; SpaceLoaded({required this.spaces, required this.selectedSpace}); @override List get props => [spaces, selectedSpace]; } // Bloc class SpacesManagementBloc extends Bloc { SpacesManagementBloc() : super(SpaceInitial()) { on((event, emit) { final List 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((event, emit) { if (state is SpaceLoaded) { final loadedState = state as SpaceLoaded; emit(SpaceLoaded(spaces: loadedState.spaces, selectedSpace: event.selectedSpace)); } }); } }