mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
61 lines
1.7 KiB
Dart
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));
|
|
}
|
|
});
|
|
}
|
|
}
|