added initial flow

This commit is contained in:
hannathkadher
2025-01-18 00:32:48 +04:00
parent ec5b7d4395
commit 440263e2f9
7 changed files with 152 additions and 83 deletions

View File

@ -84,6 +84,24 @@ class CreateSpaceModelBloc
}
});
on<AddTagsToSpaceTemplate>((event, emit) {
final currentState = state;
if (currentState is CreateSpaceModelLoaded) {
final updatedTags = currentState.space.copyWith(
tags: [
...(_space!.tags ?? []),
...event.tags,
],
);
emit(CreateSpaceModelLoaded(updatedTags));
} else {
emit(CreateSpaceModelError("Space template not initialized"));
}
});
on<UpdateSpaceTemplateName>((event, emit) {
final currentState = state;
if (currentState is CreateSpaceModelLoaded) {

View File

@ -1,6 +1,7 @@
import 'package:equatable/equatable.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/subspace_template_model.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/tag_model.dart';
abstract class CreateSpaceModelEvent extends Equatable {
const CreateSpaceModelEvent();
@ -46,6 +47,13 @@ class AddSubspacesToSpaceTemplate extends CreateSpaceModelEvent {
AddSubspacesToSpaceTemplate(this.subspaces);
}
class AddTagsToSpaceTemplate extends CreateSpaceModelEvent {
final List<TagModel> tags;
AddTagsToSpaceTemplate(this.tags);
}
class ValidateSpaceTemplateName extends CreateSpaceModelEvent {
final String name;

View File

@ -13,7 +13,7 @@ class SpaceTemplateModel extends Equatable {
String internalId;
@override
List<Object?> get props => [modelName, subspaceModels];
List<Object?> get props => [modelName, subspaceModels, tags];
SpaceTemplateModel({
this.uuid,

View File

@ -118,13 +118,28 @@ class CreateSpaceModelDialog extends StatelessWidget {
},
),
const SizedBox(height: 10),
TagChipDisplay(context,
screenWidth: screenWidth,
spaceModel: updatedSpaceModel,
products: products,
subspaces: subspaces,
allTags: allTags,
spaceNameController: spaceNameController),
TagChipDisplay(
context,
screenWidth: screenWidth,
spaceModel: updatedSpaceModel,
products: products,
subspaces: subspaces,
allTags: allTags,
spaceNameController: spaceNameController,
onLoad: (tags, subspaces) {
if(subspaces!=null){
context
.read<CreateSpaceModelBloc>()
.add(AddSubspacesToSpaceTemplate(subspaces));
}
if(tags!=null){
context
.read<CreateSpaceModelBloc>()
.add(AddTagsToSpaceTemplate(tags));
}
},
),
const SizedBox(height: 20),
SizedBox(
width: screenWidth * 0.25,

View File

@ -16,17 +16,19 @@ class TagChipDisplay extends StatelessWidget {
final List<SubspaceTemplateModel>? subspaces;
final List<String>? allTags;
final TextEditingController spaceNameController;
final void Function(
List<TagModel>? tags, List<SubspaceTemplateModel>? subspaces)? onLoad;
const TagChipDisplay(
BuildContext context, {
Key? key,
required this.screenWidth,
required this.spaceModel,
required this.products,
required this.subspaces,
required this.allTags,
required this.spaceNameController,
}) : super(key: key);
const TagChipDisplay(BuildContext context,
{Key? key,
required this.screenWidth,
required this.spaceModel,
required this.products,
required this.subspaces,
required this.allTags,
required this.spaceNameController,
this.onLoad})
: super(key: key);
@override
Widget build(BuildContext context) {
@ -104,15 +106,12 @@ class TagChipDisplay extends StatelessWidget {
child: Chip(
label: const Text(
'Edit',
style: TextStyle(
color: ColorsManager.spaceColor),
style: TextStyle(color: ColorsManager.spaceColor),
),
backgroundColor:
ColorsManager.whiteColors,
backgroundColor: ColorsManager.whiteColors,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
side: const BorderSide(
color: ColorsManager.spaceColor),
borderRadius: BorderRadius.circular(16),
side: const BorderSide(color: ColorsManager.spaceColor),
),
),
),
@ -122,7 +121,7 @@ class TagChipDisplay extends StatelessWidget {
)
: TextButton(
onPressed: () async {
final result = await showDialog<bool>(
await showDialog<bool>(
barrierDismissible: false,
context: context,
builder: (context) => AddDeviceTypeModelWidget(
@ -131,9 +130,13 @@ class TagChipDisplay extends StatelessWidget {
allTags: allTags,
spaceName: spaceNameController.text,
isCreate: true,
onLoad: (tags, subspaces) {
if (onLoad != null) {
onLoad!(tags, subspaces);
}
},
),
);
if (result == true) {}
},
style: TextButton.styleFrom(
padding: EdgeInsets.zero,
@ -189,5 +192,4 @@ class TagChipDisplay extends StatelessWidget {
))
.toList();
}
}