import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/device_managment/ac/bloc/ac_bloc.dart'; import 'package:syncrow_web/pages/device_managment/ac/bloc/ac_event.dart'; import 'package:syncrow_web/pages/device_managment/ac/bloc/ac_state.dart'; import 'package:syncrow_web/pages/device_managment/ac/view/control_list/ac_mode.dart'; import 'package:syncrow_web/pages/device_managment/ac/view/control_list/ac_toggle.dart'; import 'package:syncrow_web/pages/device_managment/ac/view/control_list/current_temp.dart'; import 'package:syncrow_web/pages/device_managment/ac/model/ac_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; class AcDeviceControl extends StatelessWidget with HelperResponsiveLayout { const AcDeviceControl({super.key, required this.device}); final AllDevicesModel device; @override Widget build(BuildContext context) { final isLarge = isLargeScreenSize(context); final isMedium = isMediumScreenSize(context); return BlocProvider( create: (context) => AcBloc()..add(AcFetchDeviceStatus(device.uuid!)), child: BlocBuilder( builder: (context, state) { if (state is AcsLoadingState) { return const Center(child: CircularProgressIndicator()); } else if (state is ACStatusLoaded) { return _buildStatusControls(state.status, isLarge, isMedium); } else { return const Center(child: Text('Error fetching status')); } }, ), ); } Widget _buildStatusControls(AcStatusModel statuses, bool isLarge, bool isMedium) { return GridView( padding: const EdgeInsets.symmetric(horizontal: 50), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: isLarge ? 3 : isMedium ? 2 : 1, mainAxisExtent: 133, crossAxisSpacing: 12, mainAxisSpacing: 12, ), children: [ AcToggle( value: statuses.acSwitch, code: 'switch', deviceId: statuses.uuid, ), AcMode( value: statuses.acMode, code: 'mode', deviceId: statuses.uuid, ), CurrentTemp( currentTemp: statuses.currentTemp, tempSet: statuses.tempSet, code: 'temp_set', deviceId: statuses.uuid, ), ], ); } }