Files
syncrow-app/lib/features/scene/view/scene_control_devices.dart
ashrafzarkanisala 1fe4603cbf connected all devices
2024-06-22 16:44:17 +03:00

72 lines
2.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart';
import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
import 'package:syncrow_app/features/devices/model/room_model.dart';
import 'package:syncrow_app/features/scene/bloc/tab_change/tab_change_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/tab_change/tab_change_event.dart';
import 'package:syncrow_app/features/scene/view/widgets/scene_devices/scene_devices_body.dart';
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
import 'package:syncrow_app/utils/resource_manager/constants.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class SceneControlDevicesView extends StatefulWidget {
const SceneControlDevicesView({super.key});
@override
State<SceneControlDevicesView> createState() =>
_SceneControlDevicesViewState();
}
class _SceneControlDevicesViewState extends State<SceneControlDevicesView>
with SingleTickerProviderStateMixin {
late final TabController _tabController;
List<RoomModel>? rooms = [];
@override
void initState() {
rooms = HomeCubit.getInstance().selectedSpace?.rooms;
rooms?.insert(
0,
RoomModel(
name: 'All Devices', devices: [], id: '-1', type: SpaceType.Room));
_tabController =
TabController(length: rooms!.length, vsync: this, initialIndex: 0);
_tabController.addListener(_handleTabSwitched);
super.initState();
}
void _handleTabSwitched() {
if (_tabController.indexIsChanging) {
final value = _tabController.index;
/// select tab
context.read<TabBarBloc>().add(
TabChanged(selectedIndex: value, roomId: rooms?[value].id ?? ''));
/// fetch devices
context.read<DevicesCubit>().fetchDevicesByRoomId(rooms![value].id!);
return;
}
}
@override
void dispose() {
super.dispose();
_tabController.dispose();
_tabController.removeListener(() {});
}
@override
Widget build(BuildContext context) {
return DefaultScaffold(
title: StringsManager.createScene,
padding: EdgeInsets.zero,
child: SceneDevicesBody(tabController: _tabController, rooms: rooms),
);
}
}