mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-09 22:57:21 +00:00
71 lines
2.5 KiB
Dart
71 lines
2.5 KiB
Dart
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<AcBloc, AcsState>(
|
|
listener: (context, state) {
|
|
|
|
},
|
|
child: BlocBuilder<AcBloc, AcsState>(
|
|
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<Status> 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!),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|