mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-11-26 18:14:55 +00:00
Refactor FlushMountedPresenceSensorBloc creation to use factory method and streamline dependency injection
This commit is contained in:
@ -0,0 +1,21 @@
|
|||||||
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart';
|
||||||
|
import 'package:syncrow_web/services/batch_control_devices_service.dart';
|
||||||
|
import 'package:syncrow_web/services/control_device_service.dart';
|
||||||
|
|
||||||
|
abstract final class FlushMountedPresenceSensorBlocFactory {
|
||||||
|
const FlushMountedPresenceSensorBlocFactory._();
|
||||||
|
|
||||||
|
static FlushMountedPresenceSensorBloc create({
|
||||||
|
required String deviceId,
|
||||||
|
}) {
|
||||||
|
return FlushMountedPresenceSensorBloc(
|
||||||
|
deviceId: '',
|
||||||
|
controlDeviceService: DebouncedControlDeviceService(
|
||||||
|
decoratee: RemoteControlDeviceService(),
|
||||||
|
),
|
||||||
|
batchControlDevicesService: DebouncedBatchControlDevicesService(
|
||||||
|
decoratee: RemoteBatchControlDevicesService(),
|
||||||
|
),
|
||||||
|
)..add(FlushMountedPresenceSensorFetchStatusEvent());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,11 +2,10 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.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/all_devices/models/factory_reset_model.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart';
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/models/flush_mounted_presence_sensor_model.dart';
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/models/flush_mounted_presence_sensor_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/factory_reset.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart';
|
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart';
|
||||||
import 'package:syncrow_web/services/batch_control_devices_service.dart';
|
|
||||||
import 'package:syncrow_web/services/control_device_service.dart';
|
|
||||||
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
|
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
|
||||||
|
|
||||||
class FlushMountedPresenceSensorBatchControlView extends StatelessWidget
|
class FlushMountedPresenceSensorBatchControlView extends StatelessWidget
|
||||||
@ -20,19 +19,10 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isExtraLarge = isExtraLargeScreenSize(context);
|
|
||||||
final isLarge = isLargeScreenSize(context);
|
|
||||||
final isMedium = isMediumScreenSize(context);
|
|
||||||
return BlocProvider(
|
return BlocProvider(
|
||||||
create: (context) => FlushMountedPresenceSensorBloc(
|
create: (context) => FlushMountedPresenceSensorBlocFactory.create(
|
||||||
deviceId: devicesIds.first,
|
deviceId: devicesIds.first,
|
||||||
controlDeviceService: DebouncedControlDeviceService(
|
),
|
||||||
decoratee: RemoteControlDeviceService(),
|
|
||||||
),
|
|
||||||
batchControlDevicesService: DebouncedBatchControlDevicesService(
|
|
||||||
decoratee: RemoteBatchControlDevicesService(),
|
|
||||||
),
|
|
||||||
)..add(FlushMountedPresenceSensorFetchStatusEvent()),
|
|
||||||
child: BlocBuilder<FlushMountedPresenceSensorBloc,
|
child: BlocBuilder<FlushMountedPresenceSensorBloc,
|
||||||
FlushMountedPresenceSensorState>(
|
FlushMountedPresenceSensorState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
@ -40,8 +30,7 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget
|
|||||||
state is FlushMountedPresenceSensorDeviceReportsLoadingState) {
|
state is FlushMountedPresenceSensorDeviceReportsLoadingState) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: CircularProgressIndicator());
|
||||||
} else if (state is FlushMountedPresenceSensorUpdateState) {
|
} else if (state is FlushMountedPresenceSensorUpdateState) {
|
||||||
return _buildGridView(
|
return _buildGridView(context, state.model);
|
||||||
context, state.model, isExtraLarge, isLarge, isMedium);
|
|
||||||
}
|
}
|
||||||
return const Center(child: Text('Error fetching status'));
|
return const Center(child: Text('Error fetching status'));
|
||||||
},
|
},
|
||||||
@ -52,10 +41,10 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget
|
|||||||
Widget _buildGridView(
|
Widget _buildGridView(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
FlushMountedPresenceSensorModel model,
|
FlushMountedPresenceSensorModel model,
|
||||||
bool isExtraLarge,
|
|
||||||
bool isLarge,
|
|
||||||
bool isMedium,
|
|
||||||
) {
|
) {
|
||||||
|
final isExtraLarge = isExtraLargeScreenSize(context);
|
||||||
|
final isLarge = isLargeScreenSize(context);
|
||||||
|
final isMedium = isMediumScreenSize(context);
|
||||||
return GridView(
|
return GridView(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 50),
|
padding: const EdgeInsets.symmetric(horizontal: 50),
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.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/all_devices/models/devices_model.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart';
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/models/flush_mounted_presence_sensor_model.dart';
|
import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/models/flush_mounted_presence_sensor_model.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_display_data.dart';
|
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_display_data.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_static_widget.dart';
|
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_static_widget.dart';
|
||||||
@ -9,8 +10,6 @@ import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presen
|
|||||||
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart';
|
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/shared/table/description_view.dart';
|
import 'package:syncrow_web/pages/device_managment/shared/table/description_view.dart';
|
||||||
import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart';
|
import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart';
|
||||||
import 'package:syncrow_web/services/batch_control_devices_service.dart';
|
|
||||||
import 'package:syncrow_web/services/control_device_service.dart';
|
|
||||||
import 'package:syncrow_web/utils/constants/assets.dart';
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||||
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
|
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
|
||||||
|
|
||||||
@ -22,19 +21,10 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isExtraLarge = isExtraLargeScreenSize(context);
|
|
||||||
final isLarge = isLargeScreenSize(context);
|
|
||||||
final isMedium = isMediumScreenSize(context);
|
|
||||||
return BlocProvider(
|
return BlocProvider(
|
||||||
create: (context) => FlushMountedPresenceSensorBloc(
|
create: (context) => FlushMountedPresenceSensorBlocFactory.create(
|
||||||
deviceId: device.uuid!,
|
deviceId: device.uuid ?? '-1',
|
||||||
controlDeviceService: DebouncedControlDeviceService(
|
),
|
||||||
decoratee: RemoteControlDeviceService(),
|
|
||||||
),
|
|
||||||
batchControlDevicesService: DebouncedBatchControlDevicesService(
|
|
||||||
decoratee: RemoteBatchControlDevicesService(),
|
|
||||||
),
|
|
||||||
)..add(FlushMountedPresenceSensorFetchStatusEvent()),
|
|
||||||
child: BlocBuilder<FlushMountedPresenceSensorBloc,
|
child: BlocBuilder<FlushMountedPresenceSensorBloc,
|
||||||
FlushMountedPresenceSensorState>(
|
FlushMountedPresenceSensorState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
@ -42,8 +32,7 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget
|
|||||||
state is FlushMountedPresenceSensorDeviceReportsLoadingState) {
|
state is FlushMountedPresenceSensorDeviceReportsLoadingState) {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return const Center(child: CircularProgressIndicator());
|
||||||
} else if (state is FlushMountedPresenceSensorUpdateState) {
|
} else if (state is FlushMountedPresenceSensorUpdateState) {
|
||||||
return _buildGridView(
|
return _buildGridView(context, state.model);
|
||||||
context, state.model, isExtraLarge, isLarge, isMedium);
|
|
||||||
} else if (state is FlushMountedPresenceSensorDeviceReportsState) {
|
} else if (state is FlushMountedPresenceSensorDeviceReportsState) {
|
||||||
return ReportsTable(
|
return ReportsTable(
|
||||||
report: state.deviceReport,
|
report: state.deviceReport,
|
||||||
@ -70,13 +59,7 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget
|
|||||||
} else if (state is FlushMountedPresenceSensorDeviceReportsFailedState) {
|
} else if (state is FlushMountedPresenceSensorDeviceReportsFailedState) {
|
||||||
final model =
|
final model =
|
||||||
context.read<FlushMountedPresenceSensorBloc>().deviceStatus;
|
context.read<FlushMountedPresenceSensorBloc>().deviceStatus;
|
||||||
return _buildGridView(
|
return _buildGridView(context, model);
|
||||||
context,
|
|
||||||
model,
|
|
||||||
isExtraLarge,
|
|
||||||
isLarge,
|
|
||||||
isMedium,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return const Center(
|
return const Center(
|
||||||
child: Text('Error fetching status', textAlign: TextAlign.center),
|
child: Text('Error fetching status', textAlign: TextAlign.center),
|
||||||
@ -89,10 +72,10 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget
|
|||||||
Widget _buildGridView(
|
Widget _buildGridView(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
FlushMountedPresenceSensorModel model,
|
FlushMountedPresenceSensorModel model,
|
||||||
bool isExtraLarge,
|
|
||||||
bool isLarge,
|
|
||||||
bool isMedium,
|
|
||||||
) {
|
) {
|
||||||
|
final isExtraLarge = isExtraLargeScreenSize(context);
|
||||||
|
final isLarge = isLargeScreenSize(context);
|
||||||
|
final isMedium = isMediumScreenSize(context);
|
||||||
return GridView(
|
return GridView(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 50),
|
padding: const EdgeInsets.symmetric(horizontal: 50),
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
@ -208,12 +191,13 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget
|
|||||||
minValue: 20,
|
minValue: 20,
|
||||||
maxValue: 300,
|
maxValue: 300,
|
||||||
steps: 1,
|
steps: 1,
|
||||||
action: (double value) => context.read<FlushMountedPresenceSensorBloc>().add(
|
action: (double value) =>
|
||||||
FlushMountedPresenceSensorChangeValueEvent(
|
context.read<FlushMountedPresenceSensorBloc>().add(
|
||||||
code: FlushMountedPresenceSensorModel.codeNoneDelay,
|
FlushMountedPresenceSensorChangeValueEvent(
|
||||||
value: (value * 10).round(),
|
code: FlushMountedPresenceSensorModel.codeNoneDelay,
|
||||||
),
|
value: (value * 10).round(),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => context.read<FlushMountedPresenceSensorBloc>().add(
|
onTap: () => context.read<FlushMountedPresenceSensorBloc>().add(
|
||||||
|
|||||||
Reference in New Issue
Block a user