diff --git a/lib/pages/space_management_v2/modules/space_details/presentation/widgets/space_sub_spaces_dialog.dart b/lib/pages/space_management_v2/modules/space_details/presentation/widgets/space_sub_spaces_dialog.dart index 587c9ea7..6b05ab8a 100644 --- a/lib/pages/space_management_v2/modules/space_details/presentation/widgets/space_sub_spaces_dialog.dart +++ b/lib/pages/space_management_v2/modules/space_details/presentation/widgets/space_sub_spaces_dialog.dart @@ -19,6 +19,7 @@ class SpaceSubSpacesDialog extends StatefulWidget { } class _SpaceSubSpacesDialogState extends State { + late final TextEditingController _subspaceNameController; late List _subspaces; bool get _hasDuplicateNames => @@ -29,6 +30,13 @@ class _SpaceSubSpacesDialogState extends State { void initState() { super.initState(); _subspaces = List.from(widget.subspaces); + _subspaceNameController = TextEditingController(); + } + + @override + void dispose() { + _subspaceNameController.dispose(); + super.dispose(); } void _handleSubspaceAdded(String name) { @@ -49,6 +57,10 @@ class _SpaceSubSpacesDialogState extends State { ); void _handleSave() { + final name = _subspaceNameController.text.trim(); + if (name.isNotEmpty) { + _handleSubspaceAdded(name); + } widget.onSave(_subspaces); Navigator.of(context).pop(); } @@ -65,6 +77,7 @@ class _SpaceSubSpacesDialogState extends State { subSpaces: _subspaces, onSubspaceAdded: _handleSubspaceAdded, onSubspaceDeleted: _handleSubspaceDeleted, + controller: _subspaceNameController, ), AnimatedSwitcher( duration: const Duration(milliseconds: 100), diff --git a/lib/pages/space_management_v2/modules/space_details/presentation/widgets/sub_spaces_input.dart b/lib/pages/space_management_v2/modules/space_details/presentation/widgets/sub_spaces_input.dart index 591f741c..dac52f93 100644 --- a/lib/pages/space_management_v2/modules/space_details/presentation/widgets/sub_spaces_input.dart +++ b/lib/pages/space_management_v2/modules/space_details/presentation/widgets/sub_spaces_input.dart @@ -10,29 +10,28 @@ class SubSpacesInput extends StatefulWidget { required this.subSpaces, required this.onSubspaceAdded, required this.onSubspaceDeleted, + required this.controller, }); final List subSpaces; final void Function(String name) onSubspaceAdded; final void Function(String uuid) onSubspaceDeleted; + final TextEditingController controller; @override State createState() => _SubSpacesInputState(); } class _SubSpacesInputState extends State { - late final TextEditingController _subspaceNameController; late final FocusNode _focusNode; @override void initState() { super.initState(); - _subspaceNameController = TextEditingController(); _focusNode = FocusNode(); } @override void dispose() { - _subspaceNameController.dispose(); _focusNode.dispose(); super.dispose(); } @@ -81,7 +80,7 @@ class _SubSpacesInputState extends State { width: 200, child: TextField( focusNode: _focusNode, - controller: _subspaceNameController, + controller: widget.controller, decoration: InputDecoration( border: InputBorder.none, hintText: widget.subSpaces.isEmpty ? 'Please enter the name' : null, @@ -93,7 +92,7 @@ class _SubSpacesInputState extends State { final trimmedValue = value.trim(); if (trimmedValue.isNotEmpty) { widget.onSubspaceAdded(trimmedValue); - _subspaceNameController.clear(); + widget.controller.clear(); _focusNode.requestFocus(); } },