diff --git a/lib/pages/device_managment/all_devices/helper/route_controls_based_code.dart b/lib/pages/device_managment/all_devices/helper/route_controls_based_code.dart index 85ecf7b6..e38ac582 100644 --- a/lib/pages/device_managment/all_devices/helper/route_controls_based_code.dart +++ b/lib/pages/device_managment/all_devices/helper/route_controls_based_code.dart @@ -192,7 +192,7 @@ mixin RouteControlsBasedCode { ); case 'SOS': return SOSBatchControlView( - deviceIds: devices.where((e) => (e.productType == 'sos')).map((e) => e.uuid!).toList(), + deviceIds: devices.where((e) => (e.productType == 'SOS')).map((e) => e.uuid!).toList(), ); default: return const SizedBox(); diff --git a/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart b/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart index e3c44405..886ca9ae 100644 --- a/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart +++ b/lib/pages/device_managment/garage_door/view/garage_door_control_view.dart @@ -6,6 +6,7 @@ import 'package:syncrow_web/pages/device_managment/garage_door/bloc/garage_door_ import 'package:syncrow_web/pages/device_managment/garage_door/helper/garage_door_helper.dart'; import 'package:syncrow_web/pages/device_managment/garage_door/models/garage_door_model.dart'; import 'package:syncrow_web/pages/device_managment/garage_door/widgets/schedule_garage_view.dart'; +import 'package:syncrow_web/pages/device_managment/shared/icon_name_status_container.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/utils/color_manager.dart'; @@ -13,10 +14,7 @@ import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; -import '../../main_door_sensor/view/main_door_control_view.dart'; - -class GarageDoorControlView extends StatelessWidget - with HelperResponsiveLayout { +class GarageDoorControlView extends StatelessWidget with HelperResponsiveLayout { final String deviceId; const GarageDoorControlView({required this.deviceId, super.key}); @@ -24,8 +22,7 @@ class GarageDoorControlView extends StatelessWidget @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => GarageDoorBloc(deviceId: deviceId) - ..add(GarageDoorInitialEvent(deviceId)), + create: (context) => GarageDoorBloc(deviceId: deviceId)..add(GarageDoorInitialEvent(deviceId)), child: BlocBuilder( builder: (context, state) { if (state is GarageDoorLoadingState) { @@ -37,9 +34,7 @@ class GarageDoorControlView extends StatelessWidget garageDoorSensor: true, onRowTap: (index) {}, onClose: () { - context - .read() - .add(BackToGarageDoorGridViewEvent()); + context.read().add(BackToGarageDoorGridViewEvent()); }, ); } else if (state is GarageDoorLoadedState) { @@ -80,10 +75,7 @@ class GarageDoorControlView extends StatelessWidget icon: status.switch1 ? Assets.openedDoor : Assets.closedDoor, onTap: () { context.read().add( - GarageDoorControlEvent( - deviceId: status.uuid, - value: !status.switch1, - code: 'switch_1'), + GarageDoorControlEvent(deviceId: status.uuid, value: !status.switch1, code: 'switch_1'), ); }, status: status.switch1, @@ -92,8 +84,7 @@ class GarageDoorControlView extends StatelessWidget IconNameStatusContainer( onTap: () { context.read().add( - FetchGarageDoorSchedulesEvent( - deviceId: deviceId, category: 'switch_1'), + FetchGarageDoorSchedulesEvent(deviceId: deviceId, category: 'switch_1'), ); showDialog( context: context, @@ -116,9 +107,7 @@ class GarageDoorControlView extends StatelessWidget children: [ IconButton( onPressed: () { - context - .read() - .add(DecreaseGarageDoorDelayEvent(deviceId: status.uuid)); + context.read().add(DecreaseGarageDoorDelayEvent(deviceId: status.uuid)); }, icon: const Icon( Icons.remove, @@ -136,8 +125,7 @@ class GarageDoorControlView extends StatelessWidget ), Text( 'h', - style: context.textTheme.bodySmall! - .copyWith(color: ColorsManager.blackColor), + style: context.textTheme.bodySmall!.copyWith(color: ColorsManager.blackColor), ), Text( (status.delay.inMinutes % 60).toString().padLeft(2, '0'), @@ -148,14 +136,11 @@ class GarageDoorControlView extends StatelessWidget ), Text( 'm', - style: context.textTheme.bodySmall! - .copyWith(color: ColorsManager.blackColor), + style: context.textTheme.bodySmall!.copyWith(color: ColorsManager.blackColor), ), IconButton( onPressed: () { - context - .read() - .add(IncreaseGarageDoorDelayEvent(deviceId: status.uuid)); + context.read().add(IncreaseGarageDoorDelayEvent(deviceId: status.uuid)); }, icon: const Icon( Icons.add, @@ -173,9 +158,7 @@ class GarageDoorControlView extends StatelessWidget onChange: (value) { context.read().add( GarageDoorControlEvent( - deviceId: status.uuid, - value: value ? status.delay.inSeconds : 0, - code: 'countdown_1'), + deviceId: status.uuid, value: value ? status.delay.inSeconds : 0, code: 'countdown_1'), ); }, ), @@ -184,8 +167,7 @@ class GarageDoorControlView extends StatelessWidget name: 'Records', icon: Assets.records, onTap: () { - context.read().add(FetchGarageDoorRecordsEvent( - code: 'switch_1', deviceId: status.uuid)); + context.read().add(FetchGarageDoorRecordsEvent(code: 'switch_1', deviceId: status.uuid)); }, status: false, textColor: ColorsManager.blackColor, diff --git a/lib/pages/device_managment/main_door_sensor/view/main_door_control_view.dart b/lib/pages/device_managment/main_door_sensor/view/main_door_control_view.dart index fe03c74a..ecdb367a 100644 --- a/lib/pages/device_managment/main_door_sensor/view/main_door_control_view.dart +++ b/lib/pages/device_managment/main_door_sensor/view/main_door_control_view.dart @@ -1,17 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_bloc.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_event.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_state.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/models/main_door_status_model.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/widgets/notification_dialog.dart'; -import 'package:syncrow_web/pages/device_managment/shared/device_controls_container.dart'; +import 'package:syncrow_web/pages/device_managment/shared/icon_name_status_container.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; -import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; class MainDoorSensorControlView extends StatelessWidget with HelperResponsiveLayout { @@ -113,71 +111,3 @@ class MainDoorSensorControlView extends StatelessWidget with HelperResponsiveLay ); } } - -class IconNameStatusContainer extends StatelessWidget { - const IconNameStatusContainer({ - super.key, - required this.name, - required this.icon, - required this.onTap, - required this.status, - required this.textColor, - this.paddingAmount = 12, - required this.isFullIcon, - }); - - final String name; - final String icon; - final GestureTapCallback onTap; - final bool status; - final Color textColor; - final double? paddingAmount; - final bool isFullIcon; - - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: onTap, - child: DeviceControlsContainer( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (isFullIcon) - ClipOval( - child: SvgPicture.asset( - icon, - fit: BoxFit.contain, - ), - ) - else - ClipOval( - child: Container( - height: 60, - width: 60, - padding: EdgeInsets.all(paddingAmount ?? 8), - color: ColorsManager.whiteColors, - child: SvgPicture.asset( - icon, - width: 35, - height: 35, - fit: BoxFit.contain, - ), - )), - const Spacer(), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 6), - child: Text( - name, - textAlign: TextAlign.start, - style: context.textTheme.titleMedium!.copyWith( - fontWeight: FontWeight.w400, - color: textColor, - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/pages/device_managment/shared/device_batch_control_dialog.dart b/lib/pages/device_managment/shared/device_batch_control_dialog.dart index d11b1701..f2dc68f5 100644 --- a/lib/pages/device_managment/shared/device_batch_control_dialog.dart +++ b/lib/pages/device_managment/shared/device_batch_control_dialog.dart @@ -1,14 +1,10 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - -import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/helper/route_controls_based_code.dart'; - import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; -class DeviceBatchControlDialog extends StatelessWidget - with RouteControlsBasedCode { +class DeviceBatchControlDialog extends StatelessWidget with RouteControlsBasedCode { final List devices; const DeviceBatchControlDialog({super.key, required this.devices}); @@ -139,6 +135,8 @@ String getBatchDialogName(AllDevicesModel device) { return "Garage Door Opener"; case 'WL': return "Water Leak Sensor"; + case 'SOS': + return "SOS"; default: return device.categoryName ?? 'Device Control'; } diff --git a/lib/pages/device_managment/shared/icon_name_status_container.dart b/lib/pages/device_managment/shared/icon_name_status_container.dart new file mode 100644 index 00000000..13b6b594 --- /dev/null +++ b/lib/pages/device_managment/shared/icon_name_status_container.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:syncrow_web/pages/device_managment/shared/device_controls_container.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; + +class IconNameStatusContainer extends StatelessWidget { + const IconNameStatusContainer({ + super.key, + required this.name, + required this.icon, + required this.onTap, + required this.status, + required this.textColor, + this.paddingAmount = 12, + required this.isFullIcon, + }); + + final String name; + final String icon; + final GestureTapCallback onTap; + final bool status; + final Color textColor; + final double? paddingAmount; + final bool isFullIcon; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: DeviceControlsContainer( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (isFullIcon) + ClipOval( + child: SvgPicture.asset( + icon, + fit: BoxFit.contain, + ), + ) + else + ClipOval( + child: Container( + height: 60, + width: 60, + padding: EdgeInsets.all(paddingAmount ?? 8), + color: ColorsManager.whiteColors, + child: SvgPicture.asset( + icon, + width: 35, + height: 35, + fit: BoxFit.contain, + ), + )), + const Spacer(), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 6), + child: Text( + name, + textAlign: TextAlign.start, + style: context.textTheme.titleMedium!.copyWith( + fontWeight: FontWeight.w400, + color: textColor, + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/device_managment/sos/bloc/sos_device_bloc.dart b/lib/pages/device_managment/sos/bloc/sos_device_bloc.dart index e9ed6899..14fdf61c 100644 --- a/lib/pages/device_managment/sos/bloc/sos_device_bloc.dart +++ b/lib/pages/device_managment/sos/bloc/sos_device_bloc.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/device_reports.dart'; +import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/sos/models/sos_status_model.dart'; import 'package:syncrow_web/services/devices_mang_api.dart'; @@ -16,6 +17,7 @@ class SosDeviceBloc extends Bloc { on(_getDeviceRecords); on(_getDeviceAutomationRecords); on(_backToSosStatusView); + on(_sosFactoryReset); } late SosStatusModel deviceStatus; @@ -71,4 +73,18 @@ class SosDeviceBloc extends Bloc { FutureOr _backToSosStatusView(BackToSosStatusView event, Emitter emit) { emit(SosDeviceLoadedState(deviceStatus)); } + + FutureOr _sosFactoryReset(SosFactoryReset event, Emitter emit) async { + emit(SosDeviceLoadingState()); + try { + final response = await DevicesManagementApi().factoryReset(event.factoryReset, event.deviceId); + if (response) { + emit(SosDeviceLoadedState(deviceStatus)); + } else { + emit(const SosDeviceErrorState('Factory reset failed')); + } + } catch (e) { + emit(SosDeviceErrorState(e.toString())); + } + } } diff --git a/lib/pages/device_managment/sos/bloc/sos_device_event.dart b/lib/pages/device_managment/sos/bloc/sos_device_event.dart index c8bb28aa..270360b8 100644 --- a/lib/pages/device_managment/sos/bloc/sos_device_event.dart +++ b/lib/pages/device_managment/sos/bloc/sos_device_event.dart @@ -37,3 +37,13 @@ class BackToSosStatusView extends SosDeviceEvent { @override List get props => []; } + +class SosFactoryReset extends SosDeviceEvent { + final String deviceId; + final FactoryResetModel factoryReset; + + const SosFactoryReset({required this.deviceId, required this.factoryReset}); + + @override + List get props => [deviceId, factoryReset]; +} diff --git a/lib/pages/device_managment/sos/view/sos_batch_control_view.dart b/lib/pages/device_managment/sos/view/sos_batch_control_view.dart index dd378b06..89fbc11a 100644 --- a/lib/pages/device_managment/sos/view/sos_batch_control_view.dart +++ b/lib/pages/device_managment/sos/view/sos_batch_control_view.dart @@ -1,4 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; +import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; +import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; +import 'package:syncrow_web/pages/device_managment/sos/bloc/sos_device_bloc.dart'; class SOSBatchControlView extends StatelessWidget { const SOSBatchControlView({ @@ -10,6 +15,52 @@ class SOSBatchControlView extends StatelessWidget { @override Widget build(BuildContext context) { - return const Placeholder(); + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + width: 170, + // height: 140, + child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)), + const SizedBox( + width: 12, + ), + SizedBox( + width: 170, + height: 140, + child: FactoryResetWidget( + callFactoryReset: () { + context.read().add( + SosFactoryReset(deviceId: deviceIds.first, factoryReset: FactoryResetModel(devicesUuid: deviceIds))); + }, + ), + ), + ], + ); } + // + // Widget _buildStatusControls(BuildContext context, SosStatusModel status) { + // return Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // SizedBox( + // width: 170, + // // height: 140, + // child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)), + // const SizedBox( + // width: 12, + // ), + // SizedBox( + // width: 170, + // height: 140, + // child: FactoryResetWidget( + // callFactoryReset: () { + // context.read().add( + // SosFactoryReset(deviceId: deviceIds.first, factoryReset: FactoryResetModel(devicesUuid: deviceIds))); + // }, + // ), + // ), + // ], + // ); + // } } diff --git a/lib/pages/device_managment/sos/view/sos_device_control_view.dart b/lib/pages/device_managment/sos/view/sos_device_control_view.dart index 0461f4cf..dff67c55 100644 --- a/lib/pages/device_managment/sos/view/sos_device_control_view.dart +++ b/lib/pages/device_managment/sos/view/sos_device_control_view.dart @@ -3,9 +3,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; -import 'package:syncrow_web/pages/device_managment/main_door_sensor/view/main_door_control_view.dart'; +import 'package:syncrow_web/pages/device_managment/shared/icon_name_status_container.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; import 'package:syncrow_web/pages/device_managment/sos/bloc/sos_device_bloc.dart'; +import 'package:syncrow_web/pages/device_managment/sos/widgets/sos_notification_dialog.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; @@ -83,7 +84,7 @@ class SosDeviceControlsView extends StatelessWidget with HelperResponsiveLayout children: [ IconNameStatusContainer( isFullIcon: false, - name: deviceStatus.sosStatus == 'sos' ? 'SOS' : 'normal', + name: deviceStatus.sosStatus == 'sos' ? 'SOS' : 'Normal', icon: deviceStatus.sosStatus == 'sos' ? Assets.sos : Assets.sosNormal, onTap: () {}, status: false, @@ -108,11 +109,11 @@ class SosDeviceControlsView extends StatelessWidget with HelperResponsiveLayout name: 'Automation Record', icon: Assets.automationRecords, onTap: () { - context.read().add( - GetDeviceAutomationRecords( - device.uuid!, - ), - ); + // context.read().add( + // GetDeviceAutomationRecords( + // device.uuid!, + // ), + // ); }, status: false, textColor: ColorsManager.blackColor, @@ -122,10 +123,10 @@ class SosDeviceControlsView extends StatelessWidget with HelperResponsiveLayout name: 'Alarm Settings', icon: Assets.mainDoorNotifi, onTap: () { - // showDialog( - // context: context, - // builder: (context) => const NotificationDialog(), - // ); + showDialog( + context: context, + builder: (context) => const SosNotificationDialog(), + ); }, status: false, textColor: ColorsManager.blackColor, diff --git a/lib/pages/device_managment/sos/widgets/sos_notification_dialog.dart b/lib/pages/device_managment/sos/widgets/sos_notification_dialog.dart new file mode 100644 index 00000000..55428107 --- /dev/null +++ b/lib/pages/device_managment/sos/widgets/sos_notification_dialog.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; + +class SosNotificationDialog extends StatefulWidget { + const SosNotificationDialog({super.key}); + + @override + State createState() => _NotificationDialogState(); +} + +class _NotificationDialogState extends State { + bool isLowBatteryNotificationEnabled = true; + bool isSosAlarmEnabled = true; + + @override + Widget build(BuildContext context) { + return Dialog( + backgroundColor: Colors.white, + insetPadding: const EdgeInsets.all(20), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + child: SizedBox( + width: 550, + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const SizedBox(), + Text( + 'Notification Settings', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 22, + color: ColorsManager.dialogBlueTitle, + ), + ), + Container( + width: 25, + decoration: BoxDecoration( + color: Colors.transparent, + shape: BoxShape.circle, + border: Border.all( + color: Colors.grey, + width: 1.0, + ), + ), + child: IconButton( + padding: EdgeInsets.all(1), + icon: const Icon( + Icons.close, + color: Colors.grey, + size: 18, + ), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ), + ], + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + width: 170, + height: 135, + child: ToggleWidget( + value: isSosAlarmEnabled, + code: 'notification', + deviceId: '', + label: 'SOS Alarm', + onChange: (v) { + setState(() { + isSosAlarmEnabled = v; + }); + }, + icon: '-1', + ), + ), + const SizedBox( + width: 16, + ), + SizedBox( + width: 170, + height: 135, + child: ToggleWidget( + value: isLowBatteryNotificationEnabled, + code: 'notification', + deviceId: '', + label: 'Low Battery', + onChange: (v) { + setState(() { + isLowBatteryNotificationEnabled = v; + }); + }, + icon: '-1', + ), + ), + ], + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/device_managment/water_leak/view/water_leak_control_view.dart b/lib/pages/device_managment/water_leak/view/water_leak_control_view.dart index 58421422..6b9dc564 100644 --- a/lib/pages/device_managment/water_leak/view/water_leak_control_view.dart +++ b/lib/pages/device_managment/water_leak/view/water_leak_control_view.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:syncrow_web/pages/device_managment/main_door_sensor/view/main_door_control_view.dart'; +import 'package:syncrow_web/pages/device_managment/shared/icon_name_status_container.dart'; +import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_bloc.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_event.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_state.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/widgets/water_leak_notifi_dialog.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; -import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; class WaterLeakView extends StatelessWidget with HelperResponsiveLayout { @@ -21,8 +21,7 @@ class WaterLeakView extends StatelessWidget with HelperResponsiveLayout { final isLarge = isLargeScreenSize(context); final isMedium = isMediumScreenSize(context); return BlocProvider( - create: (context) => - WaterLeakBloc(deviceId)..add(FetchWaterLeakStatusEvent(deviceId)), + create: (context) => WaterLeakBloc(deviceId)..add(FetchWaterLeakStatusEvent(deviceId)), child: BlocBuilder( builder: (context, state) { if (state is WaterLeakLoadingState) { @@ -45,31 +44,21 @@ class WaterLeakView extends StatelessWidget with HelperResponsiveLayout { children: [ IconNameStatusContainer( isFullIcon: false, - name: state.status.watersensorState == 'normal' - ? 'Normal' - : 'Leak Detection', - icon: state.status.watersensorState == 'normal' - ? Assets.waterLeakNormal - : Assets.waterLeakDetected, + name: state.status.watersensorState == 'normal' ? 'Normal' : 'Leak Detection', + icon: state.status.watersensorState == 'normal' ? Assets.waterLeakNormal : Assets.waterLeakDetected, onTap: () {}, status: state.status.watersensorState == 'normal', - textColor: state.status.watersensorState == 'normal' - ? ColorsManager.blackColor - : ColorsManager.red, + textColor: state.status.watersensorState == 'normal' ? ColorsManager.blackColor : ColorsManager.red, ), IconNameStatusContainer( isFullIcon: false, name: 'Records', icon: Assets.records, onTap: () { - context - .read() - .add(FetchWaterLeakReportsEvent( + context.read().add(FetchWaterLeakReportsEvent( deviceId: deviceId, code: 'watersensor_state', - from: DateTime.now() - .subtract(const Duration(days: 30)) - .millisecondsSinceEpoch, + from: DateTime.now().subtract(const Duration(days: 30)).millisecondsSinceEpoch, to: DateTime.now().millisecondsSinceEpoch, )); }, @@ -109,9 +98,7 @@ class WaterLeakView extends StatelessWidget with HelperResponsiveLayout { waterLeak: true, onRowTap: (index) {}, onClose: () { - context - .read() - .add(FetchWaterLeakStatusEvent(deviceId)); + context.read().add(FetchWaterLeakStatusEvent(deviceId)); }, ); } else if (state is WaterLeakReportsFailedState) {