diff --git a/lib/features/shared_widgets/custom_switch.dart b/lib/features/shared_widgets/custom_switch.dart index ea269f9..cdb9eab 100644 --- a/lib/features/shared_widgets/custom_switch.dart +++ b/lib/features/shared_widgets/custom_switch.dart @@ -2,80 +2,87 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/model/device_category_model.dart'; +import 'package:syncrow_app/features/devices/model/device_control_model.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; +import 'package:collection/collection.dart'; class CustomSwitch extends StatelessWidget { - const CustomSwitch({super.key, this.category, this.device}) - : assert(category != null || device != null); - - final DevicesCategoryModel? category; - - final DeviceModel? device; + const CustomSwitch({super.key, required this.device}); + final DeviceModel device; @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { bool? status; - if (device != null) { - status = device!.isOnline; - } else if (category != null) { - status = category!.devicesStatus; + if (device.status.isNotEmpty) { + status = device.status + .firstWhereOrNull((status) => status.code == "switch") + ?.value; } - return GestureDetector( - onTap: () { - if (device != null) { - DevicesCubit.getInstance().turnOnOffDevice(device!); - } else if (category != null) { - DevicesCubit.getInstance().changeCategorySwitchValue(category!); - } - }, - child: Container( - width: 45.0, - height: 28.0, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(24.0), - color: status != null - ? status - ? ColorsManager.primaryColor - : const Color(0xFFD9D9D9) - : const Color(0xFFD9D9D9), - ), - child: Center( - child: Container( - width: 40.0, - height: 23.0, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(24.0), - color: Colors.white, - ), - child: Padding( - padding: const EdgeInsets.all(2.0), - child: Container( - alignment: status != null + return status == null + ? const SizedBox() + : GestureDetector( + onTap: () { + DevicesCubit.getInstance().deviceControl( + DeviceControlModel( + deviceId: device.id, + code: device.status + .firstWhere((status) => status.code == "switch") + .code, + value: !device.status + .firstWhere((status) => status.code == "switch") + .value!, + ), + device.id!, + ); + }, + child: Container( + width: 45.0, + height: 28.0, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(24.0), + color: status != null ? status - ? Alignment.centerRight - : Alignment.centerLeft - : Alignment.centerLeft, + ? ColorsManager.primaryColor + : const Color(0xFFD9D9D9) + : const Color(0xFFD9D9D9), + ), + child: Center( child: Container( - width: 20.0, - height: 20.0, + width: 40.0, + height: 23.0, decoration: BoxDecoration( - shape: BoxShape.circle, - color: status != null - ? status - ? ColorsManager.primaryColor - : Colors.grey - : Colors.grey, + borderRadius: BorderRadius.circular(24.0), + color: Colors.white, + ), + child: Padding( + padding: const EdgeInsets.all(2.0), + child: Container( + alignment: status != null + ? status + ? Alignment.centerRight + : Alignment.centerLeft + : Alignment.centerLeft, + child: Container( + width: 20.0, + height: 20.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: status != null + ? status + ? ColorsManager.primaryColor + : Colors.grey + : Colors.grey, + ), + ), + ), ), ), ), ), - ), - ), - ), - ); + ); }, ); }