mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-08-26 14:39:41 +00:00
break down nonBokable Bloc into two blocs
This commit is contained in:
@ -1,7 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/domain/models/bookable_space_model.dart';
|
||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/presentation/blocs/non_bookable_spaces_bloc/non_bookaable_spaces_bloc.dart';
|
||||
import 'package:syncrow_web/pages/access_management/manage_bookable_spaces/presentation/blocs/setup_bookable_spaces_bloc/setup_bookable_spaces_bloc.dart';
|
||||
import 'package:syncrow_web/utils/color_manager.dart';
|
||||
|
||||
class CheckBoxSpaceWidget extends StatelessWidget {
|
||||
final BookableSpacemodel nonBookableSpace;
|
||||
@ -15,33 +16,58 @@ class CheckBoxSpaceWidget extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final isChecked = selectedSpaces.any(
|
||||
(element) => element.spaceUuid == nonBookableSpace.spaceUuid,
|
||||
);
|
||||
|
||||
return Row(
|
||||
children: [
|
||||
Checkbox(
|
||||
value: isChecked,
|
||||
onChanged: (value) {
|
||||
final bloc = context.read<NonBookableSpacesBloc>();
|
||||
if (value ?? false) {
|
||||
bloc.add(
|
||||
AddToBookableSpaceEvent(
|
||||
nonBookableSpace: nonBookableSpace,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
bloc.add(
|
||||
RemoveFromBookableSpaceEvent(
|
||||
bookableSpace: nonBookableSpace,
|
||||
),
|
||||
);
|
||||
}
|
||||
BlocBuilder<SetupBookableSpacesBloc, SetupBookableSpacesState>(
|
||||
builder: (context, state) {
|
||||
final isChecked = switch (state) {
|
||||
AddNonBookableSpaceIntoBookableState(
|
||||
bookableSpaces: final spaces
|
||||
) =>
|
||||
spaces.any((s) => s.spaceUuid == nonBookableSpace.spaceUuid),
|
||||
RemoveBookableSpaceIntoNonBookableState(
|
||||
bookableSpaces: final spaces
|
||||
) =>
|
||||
spaces.any((s) => s.spaceUuid == nonBookableSpace.spaceUuid),
|
||||
_ => false,
|
||||
};
|
||||
|
||||
return Checkbox(
|
||||
value: isChecked,
|
||||
onChanged: (value) {
|
||||
final bloc = context.read<SetupBookableSpacesBloc>();
|
||||
if (value ?? false) {
|
||||
bloc.add(AddToBookableSpaceEvent(
|
||||
nonBookableSpace: nonBookableSpace));
|
||||
} else {
|
||||
bloc.add(RemoveFromBookableSpaceEvent(
|
||||
bookableSpace: nonBookableSpace));
|
||||
}
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
const SizedBox(width: 5),
|
||||
Expanded(child: Text(nonBookableSpace.spaceName)),
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
nonBookableSpace.spaceName,
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: ColorsManager.textGray,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
nonBookableSpace.spaceVirtualAddress,
|
||||
style: const TextStyle(
|
||||
fontSize: 12,
|
||||
color: ColorsManager.textGray,
|
||||
),
|
||||
),
|
||||
],
|
||||
)),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user