Refactor device name display in Action and Condition models

This commit is contained in:
mohammad
2025-04-23 10:07:14 +03:00
parent a656d5981e
commit 2b0e504f05
3 changed files with 129 additions and 58 deletions

View File

@ -259,6 +259,7 @@ mixin SceneOperationsDataHelper {
for (var condition in conditions) { for (var condition in conditions) {
// Create a dummy Action from Condition to reuse _mapExecutorPropertyToSceneFunction // Create a dummy Action from Condition to reuse _mapExecutorPropertyToSceneFunction
Action dummyAction = Action( Action dummyAction = Action(
deviceName: condition.deviceName,
productType: condition.productType, productType: condition.productType,
actionExecutor: 'device_report', actionExecutor: 'device_report',
entityId: condition.entityId, entityId: condition.entityId,
@ -369,7 +370,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Sensitivity', 'Sensitivity',
isAutomation isAutomation
@ -386,7 +387,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Set Door lock Normal Open', 'Set Door lock Normal Open',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -440,7 +441,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Fingerprint Unlock', 'Fingerprint Unlock',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -455,7 +456,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Password Unlock', 'Password Unlock',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -470,7 +471,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Card Unlock', 'Card Unlock',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -485,7 +486,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Lock Alarm', 'Lock Alarm',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -500,7 +501,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Remote Unlock Request', 'Remote Unlock Request',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -515,7 +516,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Residual Electricity', 'Residual Electricity',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -530,7 +531,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Double Lock', 'Double Lock',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -545,7 +546,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Remote Unlock Via App', 'Remote Unlock Via App',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -560,7 +561,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Hijack Alarm', 'Hijack Alarm',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -575,7 +576,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Doorbell', 'Doorbell',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -590,7 +591,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'WIFI LOCK PRO', action.deviceName,
Assets.assetsIconsDoorLock, Assets.assetsIconsDoorLock,
'Temporary Password Unlock', 'Temporary Password Unlock',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -605,7 +606,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Far Detection', 'Far Detection',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -620,7 +621,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Motion Detection Sensitivity', 'Motion Detection Sensitivity',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -635,7 +636,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Motionless Detection Sensitivity', 'Motionless Detection Sensitivity',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -650,7 +651,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Indicator', 'Indicator',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -665,7 +666,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Nobody Time', 'Nobody Time',
OperationDialogType.countdown, OperationDialogType.countdown,
@ -680,7 +681,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Presence State', 'Presence State',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -695,7 +696,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Current Distance', 'Current Distance',
isAutomation isAutomation
@ -712,7 +713,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Illuminance Value', 'Illuminance Value',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -727,7 +728,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Human Presence Sensor', action.deviceName,
Assets.assetsIconsSensors, Assets.assetsIconsSensors,
'Self-Test Result', 'Self-Test Result',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -742,7 +743,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Smart AC Thermostat - Grey - Model A', action.deviceName,
Assets.assetsIconsAC, Assets.assetsIconsAC,
'Power', 'Power',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -757,7 +758,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Smart AC Thermostat - Grey - Model A', action.deviceName,
Assets.assetsIconsAC, Assets.assetsIconsAC,
'Set Temperature', 'Set Temperature',
isAutomation isAutomation
@ -776,7 +777,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Smart AC Thermostat - Grey - Model A', action.deviceName,
Assets.assetsIconsAC, Assets.assetsIconsAC,
'Current Temperature', 'Current Temperature',
OperationDialogType.integerSteps, OperationDialogType.integerSteps,
@ -791,7 +792,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Smart AC Thermostat - Grey - Model A', action.deviceName,
Assets.assetsIconsAC, Assets.assetsIconsAC,
'Mode', 'Mode',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -806,7 +807,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Smart AC Thermostat - Grey - Model A', action.deviceName,
Assets.assetsIconsAC, Assets.assetsIconsAC,
'Fan Speed', 'Fan Speed',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -821,7 +822,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Smart AC Thermostat - Grey - Model A', action.deviceName,
Assets.assetsIconsAC, Assets.assetsIconsAC,
'Child Lock', 'Child Lock',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -838,7 +839,7 @@ mixin SceneOperationsDataHelper {
case "3G": case "3G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'3 Gang Button Switch L-L', action.deviceName,
Assets.assetsIcons3GangSwitch, Assets.assetsIcons3GangSwitch,
'Light 1 Switch', 'Light 1 Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -850,7 +851,7 @@ mixin SceneOperationsDataHelper {
case "2G": case "2G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'2 Gang Button Switch L-L', action.deviceName,
Assets.twoGang, Assets.twoGang,
'Light 1 Switch', 'Light 1 Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -862,7 +863,7 @@ mixin SceneOperationsDataHelper {
case "1G": case "1G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'1 Gang Button Switch L-L', action.deviceName,
Assets.oneGang, Assets.oneGang,
'Light 1 Switch', 'Light 1 Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -892,7 +893,7 @@ mixin SceneOperationsDataHelper {
case "3G": case "3G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'3 Gang Button Switch L-L', action.deviceName,
Assets.assetsIcons3GangSwitch, Assets.assetsIcons3GangSwitch,
'Light 2 Switch', 'Light 2 Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -904,7 +905,7 @@ mixin SceneOperationsDataHelper {
case "2G": case "2G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'2 Gang Button Switch L-L', action.deviceName,
Assets.twoGang, Assets.twoGang,
'Light 2 Switch', 'Light 2 Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -916,7 +917,7 @@ mixin SceneOperationsDataHelper {
default: default:
return _createSceneFunction( return _createSceneFunction(
action, action,
'1 Gang Button Switch L-L', action.deviceName,
Assets.oneGang, Assets.oneGang,
'Light Switch', 'Light Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -932,7 +933,7 @@ mixin SceneOperationsDataHelper {
String? comparator, String? uniqueCustomId) { String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'3 Gang Button Switch L-L', action.deviceName,
Assets.assetsIcons3GangSwitch, Assets.assetsIcons3GangSwitch,
'Light 3 Switch', 'Light 3 Switch',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -949,7 +950,7 @@ mixin SceneOperationsDataHelper {
case "3G": case "3G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'3 Gang Button Switch L-L', action.deviceName,
Assets.assetsIcons3GangSwitch, Assets.assetsIcons3GangSwitch,
'Light 1 CountDown', 'Light 1 CountDown',
isAutomation isAutomation
@ -965,7 +966,7 @@ mixin SceneOperationsDataHelper {
case "2G": case "2G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'2 Gang Button Switch L-L', action.deviceName,
Assets.twoGang, Assets.twoGang,
'Light 1 CountDown', 'Light 1 CountDown',
isAutomation isAutomation
@ -981,7 +982,7 @@ mixin SceneOperationsDataHelper {
default: default:
return _createSceneFunction( return _createSceneFunction(
action, action,
'1 Gang Button Switch L-L', action.deviceName,
Assets.oneGang, Assets.oneGang,
'Light CountDown', 'Light CountDown',
isAutomation isAutomation
@ -1003,7 +1004,7 @@ mixin SceneOperationsDataHelper {
case "3G": case "3G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'3 Gang Button Switch L-L', action.deviceName,
Assets.assetsIcons3GangSwitch, Assets.assetsIcons3GangSwitch,
'Light 2 CountDown', 'Light 2 CountDown',
isAutomation isAutomation
@ -1019,7 +1020,7 @@ mixin SceneOperationsDataHelper {
case "2G": case "2G":
return _createSceneFunction( return _createSceneFunction(
action, action,
'2 Gang Button Switch L-L', action.deviceName,
Assets.twoGang, Assets.twoGang,
'Light 2 CountDown', 'Light 2 CountDown',
isAutomation isAutomation
@ -1035,7 +1036,7 @@ mixin SceneOperationsDataHelper {
default: default:
return _createSceneFunction( return _createSceneFunction(
action, action,
'1 Gang Button Switch L-L', action.deviceName,
Assets.oneGang, Assets.oneGang,
'Light CountDown', 'Light CountDown',
isAutomation isAutomation
@ -1055,7 +1056,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'3 Gang Button Switch L-L', action.deviceName,
Assets.assetsIcons3GangSwitch, Assets.assetsIcons3GangSwitch,
'Light 3 CountDown', 'Light 3 CountDown',
isAutomation isAutomation
@ -1074,7 +1075,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Gateway', action.deviceName,
Assets.assetsIconsGateway, Assets.assetsIconsGateway,
'Switch Alarm Sound', 'Switch Alarm Sound',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -1089,7 +1090,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Gateway', action.deviceName,
Assets.assetsIconsGateway, Assets.assetsIconsGateway,
'Master State', 'Master State',
OperationDialogType.listOfOptions, OperationDialogType.listOfOptions,
@ -1104,7 +1105,7 @@ mixin SceneOperationsDataHelper {
bool isAutomation, String? comparator, String? uniqueCustomId) { bool isAutomation, String? comparator, String? uniqueCustomId) {
return _createSceneFunction( return _createSceneFunction(
action, action,
'Gateway', action.deviceName,
Assets.assetsIconsGateway, Assets.assetsIconsGateway,
'Factory Reset', 'Factory Reset',
OperationDialogType.onOff, OperationDialogType.onOff,
@ -1447,6 +1448,7 @@ mixin SceneOperationsDataHelper {
return [ return [
_mapExecutorPropertyToSceneFunction( _mapExecutorPropertyToSceneFunction(
Action( Action(
deviceName: taskItem.deviceName,
productType: '', productType: '',
entityId: deviceId, entityId: deviceId,
executorProperty: ExecutorProperty( executorProperty: ExecutorProperty(

View File

@ -76,6 +76,8 @@ class Action {
String? type; String? type;
final String productType; final String productType;
final String deviceName;
Action({ Action({
required this.actionExecutor, required this.actionExecutor,
required this.entityId, required this.entityId,
@ -83,6 +85,7 @@ class Action {
this.name, this.name,
this.type, this.type,
required this.productType, required this.productType,
required this.deviceName,
}); });
String toRawJson() => json.encode(toJson()); String toRawJson() => json.encode(toJson());
@ -95,6 +98,7 @@ class Action {
name: json['name'] as String?, name: json['name'] as String?,
type: json['type'] as String?, type: json['type'] as String?,
productType: json['productType'] as String, productType: json['productType'] as String,
deviceName: json['deviceName'] as String,
); );
} }
if (json["executorProperty"] == null) { if (json["executorProperty"] == null) {
@ -106,6 +110,7 @@ class Action {
entityId: json["entityId"] as String, entityId: json["entityId"] as String,
executorProperty: ExecutorProperty.fromJson(json["executorProperty"]), executorProperty: ExecutorProperty.fromJson(json["executorProperty"]),
productType: json['productType'] as String, productType: json['productType'] as String,
deviceName: json['deviceName'] as String,
); );
} }
@ -147,6 +152,7 @@ class Condition {
final String entityType; final String entityType;
final Expr expr; final Expr expr;
final String productType; final String productType;
final String deviceName;
Condition({ Condition({
required this.code, required this.code,
@ -154,6 +160,7 @@ class Condition {
required this.entityType, required this.entityType,
required this.expr, required this.expr,
required this.productType, required this.productType,
required this.deviceName,
}); });
factory Condition.fromRawJson(String str) => factory Condition.fromRawJson(String str) =>
@ -167,6 +174,7 @@ class Condition {
entityType: json["entityType"], entityType: json["entityType"],
expr: Expr.fromJson(json["expr"]), expr: Expr.fromJson(json["expr"]),
productType: json['productType'] as String, productType: json['productType'] as String,
deviceName: json['deviceName'] as String,
); );
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {

View File

@ -12,12 +12,10 @@ import 'package:syncrow_app/features/scene/widgets/scene_list_tile.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart'; import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
import 'package:syncrow_app/features/shared_widgets/light_divider.dart'; import 'package:syncrow_app/features/shared_widgets/light_divider.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
import 'package:syncrow_app/generated/assets.dart'; import 'package:syncrow_app/generated/assets.dart';
import 'package:syncrow_app/navigation/navigate_to_route.dart'; import 'package:syncrow_app/navigation/navigate_to_route.dart';
import 'package:syncrow_app/navigation/routing_constants.dart'; import 'package:syncrow_app/navigation/routing_constants.dart';
import 'package:syncrow_app/utils/context_extension.dart'; import 'package:syncrow_app/utils/context_extension.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class DeviceFunctionsView extends StatelessWidget class DeviceFunctionsView extends StatelessWidget
@ -69,14 +67,13 @@ class DeviceFunctionsView extends StatelessWidget
itemCount: functions.length, itemCount: functions.length,
padding: const EdgeInsets.only(top: 24.0), padding: const EdgeInsets.only(top: 24.0),
itemBuilder: (context, index) { itemBuilder: (context, index) {
if (device.productType!.name.toString() == 'ThreeGang' ||
device.productType!.name.toString() == 'TwoGang') {
final bool isFirstInPair = index % 2 == 0; final bool isFirstInPair = index % 2 == 0;
final bool isLastInPair = final bool isLastInPair =
index % 2 == 1 || index == functions.length - 1; index % 2 == 1 || index == functions.length - 1;
final bool isLastItem = index == functions.length - 1; final bool isLastItem = index == functions.length - 1;
return Column(mainAxisSize: MainAxisSize.min, children: [
return Column(
mainAxisSize: MainAxisSize.min,
children: [
if (isFirstInPair && index != 0) const SizedBox(height: 16), if (isFirstInPair && index != 0) const SizedBox(height: 16),
DefaultContainer( DefaultContainer(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -124,9 +121,73 @@ class DeviceFunctionsView extends StatelessWidget
), ),
], ],
), ),
)
]);
} else {
return DefaultContainer(
padding: index == 0
? const EdgeInsets.only(top: 8)
: index == functions.length - 1
? const EdgeInsets.only(bottom: 8)
: EdgeInsets.zero,
margin: EdgeInsets.zero,
borderRadius: index == 0 && index == functions.length - 1
? const BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
)
: index == 0
? const BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
)
: index == functions.length - 1
? const BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
)
: BorderRadius.zero,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
return SceneListTile(
iconsSize: 22,
minLeadingWidth: 20,
assetPath: functions[index].icon,
titleString: functions[index].operationName,
trailingWidget: const Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.arrow_forward_ios_rounded,
color: ColorsManager.greyColor,
size: 16,
), ),
], ],
),
onPressed: () {
if (isAutomation) {
_showAutomationDialog(
context, functions[index], device);
} else {
_showTabToRunDialog(
context, functions[index], device);
}
},
); );
}),
index != functions.length - 1
? SizedBox(
width: context.width * 0.8,
child: const LightDivider())
: const SizedBox(),
],
));
}
}, },
), ),
); );