This commit is contained in:
Faris Armoush
2025-04-16 15:11:43 +03:00
parent 87a2c08f64
commit 443eea9421

View File

@ -20,60 +20,36 @@ class SceneRoomsTabBarDevicesView extends StatefulWidget {
_SceneRoomsTabBarDevicesViewState(); _SceneRoomsTabBarDevicesViewState();
} }
class _SceneRoomsTabBarDevicesViewState class _SceneRoomsTabBarDevicesViewState extends State<SceneRoomsTabBarDevicesView>
extends State<SceneRoomsTabBarDevicesView>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
late final TabController _tabController; late final TabController _tabController;
List<SubSpaceModel>? rooms = [];
late final SpaceModel selectedSpace; late final SpaceModel selectedSpace;
var rooms = <SubSpaceModel>[];
@override @override
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
selectedSpace = HomeCubit.getInstance().selectedSpace!; selectedSpace = HomeCubit.getInstance().selectedSpace!;
rooms = List.from(selectedSpace.subspaces ?? []); rooms = List.from(selectedSpace.subspaces);
final defaultSubSpaceModel = SubSpaceModel(
if (rooms != null && rooms!.isNotEmpty) {
if (rooms![0].id != '-1') {
rooms?.insert(
0,
SubSpaceModel(
name: 'All Devices', name: 'All Devices',
devices: context.read<DevicesCubit>().allDevices, devices: context.read<DevicesCubit>().allDevices,
id: '-1', id: '-1',
),
); );
if (rooms.isNotEmpty) {
final isFirstRoomIdValid = rooms[0].id != '-1';
if (isFirstRoomIdValid) {
rooms.insert(0, defaultSubSpaceModel);
} }
} else { } else {
rooms = [ rooms = [defaultSubSpaceModel];
SubSpaceModel(
name: 'All Devices',
devices: context.read<DevicesCubit>().allDevices,
id: '-1',
)
];
} }
_tabController = TabController(length: rooms!.length, vsync: this); _tabController = TabController(length: rooms.length, vsync: this);
_tabController.addListener(_handleTabSwitched); _tabController.addListener(_handleTabSwitched);
setState(() {});
});
}
void _handleTabSwitched() {
if (_tabController.indexIsChanging) {
final value = _tabController.index;
/// select tab
context.read<TabBarBloc>().add(TabChanged(
selectedIndex: value,
roomId: rooms?[value].id ?? '',
unit: selectedSpace));
return;
}
} }
@override @override
@ -83,18 +59,29 @@ class _SceneRoomsTabBarDevicesViewState
_tabController.removeListener(() {}); _tabController.removeListener(() {});
} }
void _handleTabSwitched() {
if (_tabController.indexIsChanging) {
final index = _tabController.index;
context.read<TabBarBloc>().add(
TabChanged(
selectedIndex: index,
roomId: rooms[index].id ?? '',
unit: selectedSpace,
),
);
return;
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return DefaultScaffold( return DefaultScaffold(
title: StringsManager.createScene, title: StringsManager.createScene,
padding: EdgeInsets.zero, padding: EdgeInsetsDirectional.zero,
leading: IconButton( leading: IconButton(
onPressed: () { onPressed: () => navigateToRoute(context, Routes.sceneTasksRoute),
navigateToRoute(context, Routes.sceneTasksRoute); icon: const Icon(Icons.arrow_back_ios),
},
icon: const Icon(
Icons.arrow_back_ios,
),
), ),
child: SceneDevicesBody(tabController: _tabController, rooms: rooms), child: SceneDevicesBody(tabController: _tabController, rooms: rooms),
); );