diff --git a/lib/pages/device_managment/device_setting/device_management_content.dart b/lib/pages/device_managment/device_setting/device_management_content.dart index e7cd514b..a087e5bb 100644 --- a/lib/pages/device_managment/device_setting/device_management_content.dart +++ b/lib/pages/device_managment/device_setting/device_management_content.dart @@ -1,7 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:syncrow_web/pages/device_managment/all_devices/bloc/device_mgmt_bloc/device_managment_bloc.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; +import 'package:syncrow_web/pages/device_managment/device_setting/bloc/setting_bloc_bloc.dart'; import 'package:syncrow_web/pages/device_managment/device_setting/settings_model/device_info_model.dart'; import 'package:syncrow_web/pages/device_managment/device_setting/settings_model/sub_space_model.dart'; import 'package:syncrow_web/pages/device_managment/device_setting/sub_space_dialog.dart'; @@ -66,14 +69,25 @@ class DeviceManagementContent extends StatelessWidget { Padding( padding: const EdgeInsets.all(10.0), child: InkWell( - onTap: () { - showSubSpaceDialog( + onTap: () async { + final selectedSubSpace = await showSubSpaceDialog( context, communityUuid: device.community!.uuid!, spaceUuid: device.spaces!.first.uuid!, subSpaces: subSpaces, - selected: device.subspace!.uuid, + selected: deviceInfo.subspace.uuid, ); + if (selectedSubSpace != null) { + Future.delayed(const Duration(milliseconds: 500), () { + context.read().add( + SettingBlocAssignRoom( + communityUuid: device.community!.uuid!, + spaceUuid: device.spaces!.first.uuid!, + subSpaceUuid: selectedSubSpace.id ?? '', + ), + ); + }); + } }, child: infoRow( label: 'Sub-Space:', diff --git a/lib/pages/device_managment/device_setting/sub_space_dialog.dart b/lib/pages/device_managment/device_setting/sub_space_dialog.dart index 28350d4d..2a512fd9 100644 --- a/lib/pages/device_managment/device_setting/sub_space_dialog.dart +++ b/lib/pages/device_managment/device_setting/sub_space_dialog.dart @@ -9,13 +9,11 @@ import 'package:syncrow_web/utils/extension/build_context_x.dart'; class SubSpaceDialog extends StatefulWidget { final List subSpaces; final String? selected; - final void Function(SubSpaceModel?) onConfirmed; const SubSpaceDialog({ Key? key, required this.subSpaces, this.selected, - required this.onConfirmed, }) : super(key: key); @override @@ -25,6 +23,17 @@ class SubSpaceDialog extends StatefulWidget { class _SubSpaceDialogState extends State { String? _selectedId; + // @override + // void didUpdateWidget(SubSpaceDialog oldWidget) { + // super.didUpdateWidget(oldWidget); + // // Update internal state when external value changes + // if (widget.selected != _selectedId) { + // setState(() { + // _selectedId = widget.selected; + // }); + // } + // } + @override void initState() { super.initState(); @@ -86,30 +95,21 @@ class _SubSpaceDialogState extends State { } } -void showSubSpaceDialog( +Future showSubSpaceDialog( BuildContext context, { required List subSpaces, String? selected, required String communityUuid, required String spaceUuid, }) { - showDialog( + return showDialog( context: context, - barrierDismissible: true, - builder: (ctx) => SubSpaceDialog( - subSpaces: subSpaces, - selected: selected, - onConfirmed: (selectedModel) { - if (selectedModel != null) { - context.read().add( - SettingBlocAssignRoom( - communityUuid: communityUuid, - spaceUuid: spaceUuid, - subSpaceUuid: selectedModel.id ?? '', - ), - ); - } - }, + builder: (ctx) => BlocProvider.value( + value: BlocProvider.of(context), + child: SubSpaceDialog( + subSpaces: subSpaces, + selected: selected, + ), ), ); } diff --git a/lib/pages/device_managment/device_setting/subspace_dialog_buttons.dart b/lib/pages/device_managment/device_setting/subspace_dialog_buttons.dart index 80ece0cb..d9491c80 100644 --- a/lib/pages/device_managment/device_setting/subspace_dialog_buttons.dart +++ b/lib/pages/device_managment/device_setting/subspace_dialog_buttons.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:syncrow_web/pages/device_managment/device_setting/bloc/setting_bloc_bloc.dart'; import 'package:syncrow_web/pages/device_managment/device_setting/settings_model/sub_space_model.dart'; import 'package:syncrow_web/pages/device_managment/device_setting/sub_space_dialog.dart'; import 'package:syncrow_web/utils/color_manager.dart'; @@ -62,11 +60,12 @@ class SubSpaceDialogButtons extends StatelessWidget { ? null : () { final selectedModel = widget.subSpaces.firstWhere( - (space) => space.id == _selectedId, - orElse: () => - SubSpaceModel(id: null, name: '', devices: [])); - widget.onConfirmed(selectedModel); - Navigator.of(context).pop(); + (space) => space.id == _selectedId, + orElse: () => + SubSpaceModel(id: null, name: '', devices: []), + ); + Navigator.of(context) + .pop(selectedModel); }, child: Text( 'Confirm', @@ -84,31 +83,3 @@ class SubSpaceDialogButtons extends StatelessWidget { ); } } - -void showSubSpaceDialog( - BuildContext context, { - required List subSpaces, - String? selected, - required String communityUuid, - required String spaceUuid, -}) { - showDialog( - context: context, - barrierDismissible: true, - builder: (ctx) => SubSpaceDialog( - subSpaces: subSpaces, - selected: selected, - onConfirmed: (selectedModel) { - if (selectedModel != null) { - context.read().add( - SettingBlocAssignRoom( - communityUuid: communityUuid, - spaceUuid: spaceUuid, - subSpaceUuid: selectedModel.id ?? '', - ), - ); - } - }, - ), - ); -}