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/all_devices/models/device_status.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/pages/device_managment/living_room_switch/helper/living_room_helper.dart'; import 'package:syncrow_web/utils/color_manager.dart'; class AcDeviceControl extends StatelessWidget with ACHelper { const AcDeviceControl({super.key, required this.device}); final AllDevicesModel device; @override Widget build(BuildContext context) { return BlocProvider( create: (context) => AcBloc()..add(AcFetchDeviceStatus(device.uuid!)), child: BlocListener( listener: (context, state) { }, child: BlocBuilder( builder: (context, state) { if (state is AcsLoadingState) { return const Center(child: CircularProgressIndicator()); } else if (state is ACStatusLoaded) { return _buildStatusControls(state.status.status); } else { return const Center(child: Text('Error fetching status')); } }, ), ), ); } Widget _buildStatusControls(List statuses) { return GridView.builder( padding: const EdgeInsets.symmetric(horizontal: 40), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, mainAxisExtent: 133, crossAxisSpacing: 12, mainAxisSpacing: 12, ), itemCount: statuses.length, itemBuilder: (context, index) { final status = statuses[index]; return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: ColorsManager.greyColor.withOpacity(0.2), border: Border.all(color: ColorsManager.boxDivider), ), padding: const EdgeInsets.all(16), child: ACHelperControlWidgets( value: status.value, code: status.code, deviceId: device.uuid!), ); }, ); } }