diff --git a/lib/pages/spaces_management/create_subspace/views/create_subspace_model_dialog.dart b/lib/pages/spaces_management/create_subspace/views/create_subspace_model_dialog.dart index e8ef9993..09951bd8 100644 --- a/lib/pages/spaces_management/create_subspace/views/create_subspace_model_dialog.dart +++ b/lib/pages/spaces_management/create_subspace/views/create_subspace_model_dialog.dart @@ -13,7 +13,7 @@ import 'package:syncrow_web/pages/spaces_management/space_model/models/subspace_ import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; -class CreateSubSpaceDialog extends StatelessWidget { +class CreateSubSpaceDialog extends StatefulWidget { final bool isEdit; final String dialogTitle; final List? existingSubSpaces; @@ -34,14 +34,31 @@ class CreateSubSpaceDialog extends StatelessWidget { }); @override - Widget build(BuildContext context) { - final textController = TextEditingController(); + State createState() => _CreateSubSpaceDialogState(); +} +class _CreateSubSpaceDialogState extends State { + late final TextEditingController _subspaceNameController; + + @override + void initState() { + _subspaceNameController = TextEditingController(); + super.initState(); + } + + @override + void dispose() { + _subspaceNameController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { return BlocProvider( create: (_) { final bloc = SubSpaceBloc(); - if (existingSubSpaces != null) { - for (final subSpace in existingSubSpaces ?? []) { + if (widget.existingSubSpaces != null) { + for (final subSpace in widget.existingSubSpaces ?? []) { bloc.add(AddSubSpace(subSpace)); } } @@ -62,7 +79,7 @@ class CreateSubSpaceDialog extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Text( - dialogTitle, + widget.dialogTitle, style: context.textTheme.headlineLarge?.copyWith( color: ColorsManager.blackColor, ), @@ -115,7 +132,7 @@ class CreateSubSpaceDialog extends StatelessWidget { SizedBox( width: 200, child: TextField( - controller: textController, + controller: _subspaceNameController, decoration: InputDecoration( border: InputBorder.none, hintText: state.subSpaces.isEmpty @@ -126,16 +143,17 @@ class CreateSubSpaceDialog extends StatelessWidget { ), ), onSubmitted: (value) { - if (value.trim().isNotEmpty) { + final trimmedValue = value.trim(); + if (trimmedValue.isNotEmpty) { context.read().add( AddSubSpace( SubspaceModel( - subspaceName: value.trim(), + subspaceName: trimmedValue, disabled: false, ), ), ); - textController.clear(); + _subspaceNameController.clear(); } }, style: context.textTheme.bodyMedium, @@ -172,7 +190,7 @@ class CreateSubSpaceDialog extends StatelessWidget { ? () { final subSpacesBloc = context.read(); final subSpaces = subSpacesBloc.state.subSpaces; - onSave?.call(subSpaces); + widget.onSave?.call(subSpaces); Navigator.of(context).pop(); } : null,