mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-11-27 08:04:55 +00:00
Merge pull request #34 from SyncrowIOT/functions_dialog
Functions dialog view for edit and added devices in scene
This commit is contained in:
@ -24,18 +24,19 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
on<RemoveTempTaskByIdEvent>(_removeTempTaskById);
|
on<RemoveTempTaskByIdEvent>(_removeTempTaskById);
|
||||||
on<RemoveFromSelectedValueById>(_removeFromSelectedValueById);
|
on<RemoveFromSelectedValueById>(_removeFromSelectedValueById);
|
||||||
on<DeleteSceneEvent>(_deleteScene);
|
on<DeleteSceneEvent>(_deleteScene);
|
||||||
|
on<UpdateTaskEvent>(_updateTaskValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SceneStaticFunction> tasksList = [];
|
List<SceneStaticFunction> tasksList = [];
|
||||||
List<SceneStaticFunction> tempTasksList = [];
|
List<SceneStaticFunction> tempTasksList = [];
|
||||||
final Map<String, dynamic> selectedValues = {};
|
final Map<String, dynamic> selectedValues = {};
|
||||||
|
|
||||||
FutureOr<void> _onAddSceneTask(AddTaskEvent event, Emitter<CreateSceneState> emit) {
|
FutureOr<void> _onAddSceneTask(
|
||||||
|
AddTaskEvent event, Emitter<CreateSceneState> emit) {
|
||||||
final copyList = List<SceneStaticFunction>.from(tempTasksList);
|
final copyList = List<SceneStaticFunction>.from(tempTasksList);
|
||||||
tasksList.addAll(copyList);
|
tasksList.addAll(copyList);
|
||||||
tempTasksList.clear();
|
tempTasksList.clear();
|
||||||
selectedValues.clear();
|
selectedValues.clear();
|
||||||
emit(TempHoldSceneTask(tempTasksList: tempTasksList));
|
|
||||||
emit(AddSceneTask(tasksList: tasksList));
|
emit(AddSceneTask(tasksList: tasksList));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,13 +90,15 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
emit(AddSceneTask(tasksList: tasksList));
|
emit(AddSceneTask(tasksList: tasksList));
|
||||||
}
|
}
|
||||||
|
|
||||||
FutureOr<void> _selectedValue(SelectedValueEvent event, Emitter<CreateSceneState> emit) {
|
FutureOr<void> _selectedValue(
|
||||||
|
SelectedValueEvent event, Emitter<CreateSceneState> emit) {
|
||||||
selectedValues[event.code] = event.value;
|
selectedValues[event.code] = event.value;
|
||||||
emit(SelectedTaskValueState(value: event.value));
|
emit(SelectedTaskValueState(value: event.value));
|
||||||
emit(AddSceneTask(tasksList: tasksList));
|
emit(AddSceneTask(tasksList: tasksList));
|
||||||
}
|
}
|
||||||
|
|
||||||
FutureOr<void> _removeTaskById(RemoveTaskByIdEvent event, Emitter<CreateSceneState> emit) {
|
FutureOr<void> _removeTaskById(
|
||||||
|
RemoveTaskByIdEvent event, Emitter<CreateSceneState> emit) {
|
||||||
emit(CreateSceneLoading());
|
emit(CreateSceneLoading());
|
||||||
|
|
||||||
for (var element in tasksList) {
|
for (var element in tasksList) {
|
||||||
@ -114,7 +117,6 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
if (element.code == event.code) {
|
if (element.code == event.code) {
|
||||||
tempTasksList.remove(element);
|
tempTasksList.remove(element);
|
||||||
|
|
||||||
emit(TempHoldSceneTask(tempTasksList: tempTasksList));
|
|
||||||
emit(AddSceneTask(tasksList: tasksList));
|
emit(AddSceneTask(tasksList: tasksList));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -132,6 +134,7 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
if (response['success'] == true) {
|
if (response['success'] == true) {
|
||||||
tasksList.clear();
|
tasksList.clear();
|
||||||
tempTasksList.clear();
|
tempTasksList.clear();
|
||||||
|
selectedValues.clear();
|
||||||
emit(const CreateSceneWithTasks(success: true));
|
emit(const CreateSceneWithTasks(success: true));
|
||||||
} else {
|
} else {
|
||||||
emit(const CreateSceneError(message: 'Something went wrong'));
|
emit(const CreateSceneError(message: 'Something went wrong'));
|
||||||
@ -142,7 +145,8 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FutureOr<void> _clearTaskList(ClearTaskListEvent event, Emitter<CreateSceneState> emit) {
|
FutureOr<void> _clearTaskList(
|
||||||
|
ClearTaskListEvent event, Emitter<CreateSceneState> emit) {
|
||||||
tasksList.clear();
|
tasksList.clear();
|
||||||
emit(AddSceneTask(tasksList: tasksList));
|
emit(AddSceneTask(tasksList: tasksList));
|
||||||
}
|
}
|
||||||
@ -154,8 +158,8 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
try {
|
try {
|
||||||
final response = await SceneApi.getSceneDetails(event.sceneId);
|
final response = await SceneApi.getSceneDetails(event.sceneId);
|
||||||
if (response.id.isNotEmpty) {
|
if (response.id.isNotEmpty) {
|
||||||
tasksList =
|
tasksList = List<SceneStaticFunction>.from(
|
||||||
List<SceneStaticFunction>.from(getTaskListFunctionsFromApi(actions: response.actions));
|
getTaskListFunctionsFromApi(actions: response.actions));
|
||||||
emit(AddSceneTask(
|
emit(AddSceneTask(
|
||||||
tasksList: tasksList,
|
tasksList: tasksList,
|
||||||
));
|
));
|
||||||
@ -167,10 +171,10 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FutureOr<void> _clearTempTaskList(ClearTempTaskListEvent event, Emitter<CreateSceneState> emit) {
|
FutureOr<void> _clearTempTaskList(
|
||||||
|
ClearTempTaskListEvent event, Emitter<CreateSceneState> emit) {
|
||||||
tempTasksList.clear();
|
tempTasksList.clear();
|
||||||
selectedValues.clear();
|
selectedValues.clear();
|
||||||
emit(TempHoldSceneTask(tempTasksList: tempTasksList));
|
|
||||||
emit(AddSceneTask(tasksList: tempTasksList));
|
emit(AddSceneTask(tasksList: tempTasksList));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,11 +187,13 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FutureOr<void> _deleteScene(DeleteSceneEvent event, Emitter<CreateSceneState> emit) async {
|
FutureOr<void> _deleteScene(
|
||||||
|
DeleteSceneEvent event, Emitter<CreateSceneState> emit) async {
|
||||||
emit(DeleteSceneLoading());
|
emit(DeleteSceneLoading());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final response = await SceneApi.deleteScene(sceneId: event.sceneId, unitUuid: event.unitUuid);
|
final response = await SceneApi.deleteScene(
|
||||||
|
sceneId: event.sceneId, unitUuid: event.unitUuid);
|
||||||
if (response == true) {
|
if (response == true) {
|
||||||
emit(const DeleteSceneSuccess(true));
|
emit(const DeleteSceneSuccess(true));
|
||||||
} else {
|
} else {
|
||||||
@ -197,4 +203,17 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
|
|||||||
emit(const DeleteSceneError(message: 'Something went wrong'));
|
emit(const DeleteSceneError(message: 'Something went wrong'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FutureOr<void> _updateTaskValue(
|
||||||
|
UpdateTaskEvent event, Emitter<CreateSceneState> emit) {
|
||||||
|
for (var i = 0; i < tasksList.length; i++) {
|
||||||
|
if (tasksList[i].uniqueCustomId == event.taskId) {
|
||||||
|
tasksList[i] = tasksList[i].copyWith(
|
||||||
|
functionValue: event.newValue,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
emit(AddSceneTask(tasksList: tasksList));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,6 +42,14 @@ class TempHoldSceneTasksEvent extends CreateSceneEvent {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class UpdateTaskEvent extends CreateSceneEvent {
|
||||||
|
final String taskId;
|
||||||
|
final dynamic newValue;
|
||||||
|
const UpdateTaskEvent({required this.taskId, required this.newValue});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [taskId, newValue];
|
||||||
|
}
|
||||||
|
|
||||||
class SelectedValueEvent extends CreateSceneEvent {
|
class SelectedValueEvent extends CreateSceneEvent {
|
||||||
final dynamic value;
|
final dynamic value;
|
||||||
final String code;
|
final String code;
|
||||||
|
|||||||
@ -80,59 +80,23 @@ mixin SceneLogicHelper {
|
|||||||
|
|
||||||
Widget getTheCorrectDialogBody(
|
Widget getTheCorrectDialogBody(
|
||||||
SceneStaticFunction taskItem,
|
SceneStaticFunction taskItem,
|
||||||
List<SceneStaticFunction>? listOfSceneStaticFunction,
|
|
||||||
int? index,
|
|
||||||
// List<SceneStaticFunction> functionOperation
|
|
||||||
) {
|
) {
|
||||||
bool checkTaskItemAndOperation() {
|
if (taskItem.code.contains('temp_set')) {
|
||||||
return taskItem.code == 'temp_set' || taskItem.code == 'countdown';
|
return AlertDialogTemperatureBody(
|
||||||
}
|
taskItem: taskItem,
|
||||||
|
functionValue: taskItem.functionValue,
|
||||||
bool checkListAndIndex() {
|
);
|
||||||
if (listOfSceneStaticFunction == null || index == null) {
|
} else if (taskItem.code.contains('countdown') ||
|
||||||
return false;
|
taskItem.deviceId.contains('delay')) {
|
||||||
}
|
return AlertDialogCountdown(
|
||||||
return listOfSceneStaticFunction[index].code == 'temp_set' ||
|
durationValue: taskItem.functionValue,
|
||||||
listOfSceneStaticFunction[index].code.contains('countdown') ||
|
functionValue: taskItem.functionValue,
|
||||||
listOfSceneStaticFunction[index].code.contains('presence_time');
|
function: taskItem,
|
||||||
}
|
);
|
||||||
|
|
||||||
if (checkTaskItemAndOperation()) {
|
|
||||||
if (taskItem.code == 'temp_set') {
|
|
||||||
return AlertDialogTemperatureBody(
|
|
||||||
index: index!,
|
|
||||||
functions: listOfSceneStaticFunction ?? [],
|
|
||||||
functionValue: taskItem.functionValue,
|
|
||||||
);
|
|
||||||
} else if (taskItem.code == 'countdown') {
|
|
||||||
return AlertDialogCountdown(
|
|
||||||
durationValue: taskItem.functionValue,
|
|
||||||
functionValue: taskItem.functionValue,
|
|
||||||
function: taskItem,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (checkListAndIndex()) {
|
|
||||||
if (listOfSceneStaticFunction![index!].code == 'temp_set') {
|
|
||||||
return AlertDialogTemperatureBody(
|
|
||||||
index: index,
|
|
||||||
functions: listOfSceneStaticFunction,
|
|
||||||
functionValue: taskItem.functionValue,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return AlertDialogCountdown(
|
|
||||||
durationValue: listOfSceneStaticFunction[index].functionValue ??
|
|
||||||
taskItem.functionValue,
|
|
||||||
functionValue: taskItem.functionValue,
|
|
||||||
function: listOfSceneStaticFunction[index],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return AlertDialogFunctionsOperationsBody(
|
return AlertDialogFunctionsOperationsBody(
|
||||||
index: index ?? 0,
|
taskItem: taskItem,
|
||||||
functions: listOfSceneStaticFunction ?? [],
|
|
||||||
functionValue: taskItem.functionValue,
|
functionValue: taskItem.functionValue,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1171,9 +1171,7 @@ mixin SceneOperationsDataHelper {
|
|||||||
icon: Assets.assetsTempreture,
|
icon: Assets.assetsTempreture,
|
||||||
operationName: 'Set Temperature',
|
operationName: 'Set Temperature',
|
||||||
code: 'temp_set',
|
code: 'temp_set',
|
||||||
functionValue: executorProperty.functionValue != null
|
functionValue: executorProperty.functionValue,
|
||||||
? ((executorProperty.functionValue! / 10) as double).toInt()
|
|
||||||
: null,
|
|
||||||
operationalValues: [
|
operationalValues: [
|
||||||
SceneOperationalValue(
|
SceneOperationalValue(
|
||||||
icon: Assets.assetsCelsiusDegrees,
|
icon: Assets.assetsCelsiusDegrees,
|
||||||
@ -1284,6 +1282,27 @@ mixin SceneOperationsDataHelper {
|
|||||||
required SceneStaticFunction taskItem,
|
required SceneStaticFunction taskItem,
|
||||||
}) {
|
}) {
|
||||||
List<SceneStaticFunction> functions = [];
|
List<SceneStaticFunction> functions = [];
|
||||||
|
if (deviceId.contains('delay')) {
|
||||||
|
functions.add(
|
||||||
|
SceneStaticFunction(
|
||||||
|
deviceId: taskItem.deviceId,
|
||||||
|
deviceName: 'delay',
|
||||||
|
deviceIcon: Assets.delay,
|
||||||
|
icon: Assets.delay,
|
||||||
|
operationName: 'delay',
|
||||||
|
functionValue: taskItem.functionValue,
|
||||||
|
code: '',
|
||||||
|
operationalValues: [
|
||||||
|
SceneOperationalValue(
|
||||||
|
icon: '',
|
||||||
|
description: "",
|
||||||
|
value: 0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
return functions;
|
||||||
|
}
|
||||||
switch (taskItem.code) {
|
switch (taskItem.code) {
|
||||||
case 'sensitivity':
|
case 'sensitivity':
|
||||||
functions.add(
|
functions.add(
|
||||||
@ -1650,11 +1669,6 @@ mixin SceneOperationsDataHelper {
|
|||||||
icon: Assets.assetsAcPowerOFF,
|
icon: Assets.assetsAcPowerOFF,
|
||||||
description: "OFF",
|
description: "OFF",
|
||||||
value: false),
|
value: false),
|
||||||
SceneOperationalValue(
|
|
||||||
icon: Assets.assetsSceneRefresh,
|
|
||||||
description: "Reverse Switch",
|
|
||||||
value: true,
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
@ -1674,11 +1688,6 @@ mixin SceneOperationsDataHelper {
|
|||||||
icon: Assets.assetsAcPowerOFF,
|
icon: Assets.assetsAcPowerOFF,
|
||||||
description: "OFF",
|
description: "OFF",
|
||||||
value: false),
|
value: false),
|
||||||
SceneOperationalValue(
|
|
||||||
icon: Assets.assetsSceneRefresh,
|
|
||||||
description: "Reverse Switch",
|
|
||||||
value: true,
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
@ -1698,11 +1707,6 @@ mixin SceneOperationsDataHelper {
|
|||||||
icon: Assets.assetsAcPowerOFF,
|
icon: Assets.assetsAcPowerOFF,
|
||||||
description: "OFF",
|
description: "OFF",
|
||||||
value: false),
|
value: false),
|
||||||
SceneOperationalValue(
|
|
||||||
icon: Assets.assetsSceneRefresh,
|
|
||||||
description: "Reverse Switch",
|
|
||||||
value: true,
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -137,8 +137,7 @@ class DeviceFunctionsView extends StatelessWidget
|
|||||||
context.customAlertDialog(
|
context.customAlertDialog(
|
||||||
alertBody: functions[index].code == 'temp_set'
|
alertBody: functions[index].code == 'temp_set'
|
||||||
? AlertDialogTemperatureBody(
|
? AlertDialogTemperatureBody(
|
||||||
index: index,
|
taskItem: functions[index],
|
||||||
functions: functions,
|
|
||||||
functionValue: functionValues,
|
functionValue: functionValues,
|
||||||
)
|
)
|
||||||
: (functions[index]
|
: (functions[index]
|
||||||
@ -156,8 +155,7 @@ class DeviceFunctionsView extends StatelessWidget
|
|||||||
functionValue: functionValues,
|
functionValue: functionValues,
|
||||||
)
|
)
|
||||||
: AlertDialogFunctionsOperationsBody(
|
: AlertDialogFunctionsOperationsBody(
|
||||||
index: index,
|
taskItem: functions[index],
|
||||||
functions: functions,
|
|
||||||
functionValue: functionValues,
|
functionValue: functionValues,
|
||||||
),
|
),
|
||||||
title: functions[index].operationName,
|
title: functions[index].operationName,
|
||||||
@ -188,11 +186,6 @@ class DeviceFunctionsView extends StatelessWidget
|
|||||||
final tempTaskList = context
|
final tempTaskList = context
|
||||||
.read<CreateSceneBloc>()
|
.read<CreateSceneBloc>()
|
||||||
.tempTasksList;
|
.tempTasksList;
|
||||||
// if (tempTaskList.isEmpty) {
|
|
||||||
// context
|
|
||||||
// .read<CreateSceneBloc>()
|
|
||||||
// .add(const ClearTempTaskListEvent());
|
|
||||||
// } else {
|
|
||||||
for (var element in tempTaskList) {
|
for (var element in tempTaskList) {
|
||||||
if (element.code == functions[index].code) {
|
if (element.code == functions[index].code) {
|
||||||
context.read<CreateSceneBloc>().add(
|
context.read<CreateSceneBloc>().add(
|
||||||
@ -203,7 +196,6 @@ class DeviceFunctionsView extends StatelessWidget
|
|||||||
code: functions[index].code));
|
code: functions[index].code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@ -9,14 +9,12 @@ import 'package:syncrow_app/features/scene/widgets/scene_list_tile.dart';
|
|||||||
class AlertDialogFunctionsOperationsBody extends StatefulWidget {
|
class AlertDialogFunctionsOperationsBody extends StatefulWidget {
|
||||||
AlertDialogFunctionsOperationsBody({
|
AlertDialogFunctionsOperationsBody({
|
||||||
super.key,
|
super.key,
|
||||||
required this.functions,
|
|
||||||
required this.index,
|
|
||||||
this.functionValue,
|
this.functionValue,
|
||||||
|
required this.taskItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
final List<SceneStaticFunction> functions;
|
|
||||||
final int index;
|
|
||||||
dynamic functionValue;
|
dynamic functionValue;
|
||||||
|
final SceneStaticFunction taskItem;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<AlertDialogFunctionsOperationsBody> createState() =>
|
State<AlertDialogFunctionsOperationsBody> createState() =>
|
||||||
@ -30,15 +28,14 @@ class _AlertDialogFunctionsOperationsBodyState
|
|||||||
super.didChangeDependencies();
|
super.didChangeDependencies();
|
||||||
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
|
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (tempTaskList.isNotEmpty) {
|
if (tempTaskList.isNotEmpty) {
|
||||||
for (var element in tempTaskList) {
|
for (var element in tempTaskList) {
|
||||||
if (element.code == widget.functions[widget.index].code) {
|
if (element.code == widget.taskItem.code) {
|
||||||
groupValue = element.functionValue;
|
groupValue = element.functionValue;
|
||||||
} else {
|
} else {
|
||||||
context.read<CreateSceneBloc>().add(RemoveFromSelectedValueById(
|
context
|
||||||
code: widget.functions[widget.index].code));
|
.read<CreateSceneBloc>()
|
||||||
|
.add(RemoveFromSelectedValueById(code: widget.taskItem.code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +55,7 @@ class _AlertDialogFunctionsOperationsBodyState
|
|||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
...widget.functions[widget.index].operationalValues.map(
|
...widget.taskItem.operationalValues.map(
|
||||||
(operation) => BlocBuilder<CreateSceneBloc, CreateSceneState>(
|
(operation) => BlocBuilder<CreateSceneBloc, CreateSceneState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return SceneListTile(
|
return SceneListTile(
|
||||||
@ -79,8 +76,7 @@ class _AlertDialogFunctionsOperationsBodyState
|
|||||||
groupValue = value;
|
groupValue = value;
|
||||||
});
|
});
|
||||||
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
||||||
value: value!,
|
value: value!, code: widget.taskItem.code));
|
||||||
code: widget.functions[widget.index].code));
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
@ -88,8 +84,7 @@ class _AlertDialogFunctionsOperationsBodyState
|
|||||||
groupValue = operation.value;
|
groupValue = operation.value;
|
||||||
});
|
});
|
||||||
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
||||||
value: groupValue,
|
value: groupValue, code: widget.taskItem.code));
|
||||||
code: widget.functions[widget.index].code));
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -14,13 +14,15 @@ import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
|
|||||||
class AlertDialogTemperatureBody extends StatefulWidget {
|
class AlertDialogTemperatureBody extends StatefulWidget {
|
||||||
AlertDialogTemperatureBody({
|
AlertDialogTemperatureBody({
|
||||||
super.key,
|
super.key,
|
||||||
required this.index,
|
//required this.index,
|
||||||
required this.functions,
|
// required this.functions,
|
||||||
this.functionValue,
|
this.functionValue,
|
||||||
|
required this.taskItem,
|
||||||
});
|
});
|
||||||
|
|
||||||
final List<SceneStaticFunction> functions;
|
//final List<SceneStaticFunction> functions;
|
||||||
final int index;
|
// final int index;
|
||||||
|
final SceneStaticFunction taskItem;
|
||||||
dynamic functionValue;
|
dynamic functionValue;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -36,11 +38,12 @@ class _AlertDialogTemperatureBodyState
|
|||||||
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
|
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
|
||||||
|
|
||||||
for (var element in tempTaskList) {
|
for (var element in tempTaskList) {
|
||||||
if (element.code == widget.functions[widget.index].code) {
|
if (element.code == widget.taskItem.code) {
|
||||||
temperature = element.functionValue;
|
temperature = element.functionValue;
|
||||||
} else {
|
} else {
|
||||||
context.read<CreateSceneBloc>().add(RemoveFromSelectedValueById(
|
context
|
||||||
code: widget.functions[widget.index].code));
|
.read<CreateSceneBloc>()
|
||||||
|
.add(RemoveFromSelectedValueById(code: widget.taskItem.code));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (widget.functionValue != null) {
|
if (widget.functionValue != null) {
|
||||||
@ -63,8 +66,9 @@ class _AlertDialogTemperatureBodyState
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
||||||
value: temperature * 10,
|
value: temperature * 10,
|
||||||
code: widget.functions[widget.index].code));
|
code: widget.taskItem.code,
|
||||||
|
));
|
||||||
},
|
},
|
||||||
icon: const Icon(
|
icon: const Icon(
|
||||||
Icons.remove,
|
Icons.remove,
|
||||||
@ -94,7 +98,7 @@ class _AlertDialogTemperatureBodyState
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
subtitle: BodyLarge(
|
subtitle: BodyLarge(
|
||||||
text: widget.functions[widget.index].operationalValues[0].description
|
text: widget.taskItem.operationalValues[0].description
|
||||||
.toString(),
|
.toString(),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
@ -107,7 +111,7 @@ class _AlertDialogTemperatureBodyState
|
|||||||
});
|
});
|
||||||
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
context.read<CreateSceneBloc>().add(SelectedValueEvent(
|
||||||
value: temperature * 10,
|
value: temperature * 10,
|
||||||
code: widget.functions[widget.index].code));
|
code: widget.taskItem.code));
|
||||||
},
|
},
|
||||||
icon: const Icon(
|
icon: const Icon(
|
||||||
Icons.add,
|
Icons.add,
|
||||||
|
|||||||
@ -130,9 +130,7 @@ class CustomBottomSheetWidget extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
onDismiss: () {
|
onDismiss: () {
|
||||||
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
|
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
|
||||||
// if (tempTaskList.isNotEmpty) {
|
|
||||||
// context.read<CreateSceneBloc>().add(const ClearTempTaskListEvent());
|
|
||||||
// } else {
|
|
||||||
for (var element in tempTaskList) {
|
for (var element in tempTaskList) {
|
||||||
if (element.code == functions[0].code) {
|
if (element.code == functions[0].code) {
|
||||||
context
|
context
|
||||||
|
|||||||
@ -22,16 +22,15 @@ class ThenAddedTasksContainer extends StatelessWidget
|
|||||||
required this.taskItem,
|
required this.taskItem,
|
||||||
this.sceneId,
|
this.sceneId,
|
||||||
this.index,
|
this.index,
|
||||||
this.listOfSceneStaticFunction,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
final SceneStaticFunction taskItem;
|
final SceneStaticFunction taskItem;
|
||||||
String? sceneId;
|
String? sceneId;
|
||||||
List<SceneStaticFunction>? listOfSceneStaticFunction;
|
|
||||||
int? index;
|
int? index;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final createSceneBloc = context.read<CreateSceneBloc>();
|
||||||
String operationValue = '';
|
String operationValue = '';
|
||||||
if (taskItem.code.contains('countdown') ||
|
if (taskItem.code.contains('countdown') ||
|
||||||
taskItem.deviceId.contains('delay')) {
|
taskItem.deviceId.contains('delay')) {
|
||||||
@ -41,38 +40,46 @@ class ThenAddedTasksContainer extends StatelessWidget
|
|||||||
Duration(seconds: int.tryParse(functionValue.toString()) ?? 0);
|
Duration(seconds: int.tryParse(functionValue.toString()) ?? 0);
|
||||||
operationValue =
|
operationValue =
|
||||||
"${duration.inHours}h ${duration.inMinutes.remainder(60)}m ";
|
"${duration.inHours}h ${duration.inMinutes.remainder(60)}m ";
|
||||||
|
} else if (taskItem.code.contains('temp_set')) {
|
||||||
|
if (taskItem.functionValue != null || taskItem.functionValue != 0) {
|
||||||
|
operationValue =
|
||||||
|
'${((taskItem.functionValue / 10) as double).round().toString()}°C';
|
||||||
|
} else {
|
||||||
|
operationValue = '0°C';
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
final functionValue =
|
final functionValue =
|
||||||
taskItem.functionValue ?? taskItem.operationalValues.first.value;
|
taskItem.functionValue ?? taskItem.operationalValues.first.value;
|
||||||
operationValue = functionValue.toString();
|
operationValue = functionValue.toString();
|
||||||
}
|
}
|
||||||
return DefaultContainer(
|
return DefaultContainer(
|
||||||
onTap: () async {
|
onTap: () {
|
||||||
// List<SceneStaticFunction> functionOperation = [];
|
List<SceneStaticFunction> functionOperation = [];
|
||||||
// if (sceneId == null) {
|
|
||||||
// functionOperation = getOperationsForOneFunction(
|
/// get the task functions
|
||||||
// taskItem: taskItem, deviceId: taskItem.deviceId);
|
functionOperation = List.from(getOperationsForOneFunction(
|
||||||
// }
|
taskItem: taskItem, deviceId: taskItem.deviceId));
|
||||||
|
|
||||||
|
/// show alert dialog based on type
|
||||||
context.customAlertDialog(
|
context.customAlertDialog(
|
||||||
alertBody: getTheCorrectDialogBody(
|
alertBody: getTheCorrectDialogBody(functionOperation.first),
|
||||||
taskItem,
|
title: functionOperation.first.operationName,
|
||||||
listOfSceneStaticFunction,
|
|
||||||
index,
|
|
||||||
),
|
|
||||||
title: listOfSceneStaticFunction![index!].operationName,
|
|
||||||
onConfirm: () {
|
onConfirm: () {
|
||||||
// final selectedValue = context.read<CreateSceneBloc>().selectedValue;
|
final savedCode = functionOperation.first.deviceId.contains('delay')
|
||||||
// context.read<CreateSceneBloc>().add(TempHoldSceneTasksEvent(
|
? 'delay'
|
||||||
// deviceControlModel: DeviceControlModel(
|
: functionOperation.first.code;
|
||||||
// deviceId: device.uuid,
|
final selectedValue = createSceneBloc.selectedValues[savedCode];
|
||||||
// code: functions[index].code,
|
|
||||||
// value: selectedValue,
|
try {
|
||||||
// ),
|
createSceneBloc.add(
|
||||||
// deviceId: device.uuid ?? '',
|
UpdateTaskEvent(
|
||||||
// operation: functions[index].operationName,
|
newValue: selectedValue,
|
||||||
// icon: device.icon ?? '',
|
taskId: taskItem.uniqueCustomId,
|
||||||
// deviceName: device.name ?? '',
|
),
|
||||||
// ));
|
);
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('Error adding UpdateTaskEvent: $e');
|
||||||
|
}
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -115,8 +122,11 @@ class ThenAddedTasksContainer extends StatelessWidget
|
|||||||
},
|
},
|
||||||
child: SceneListTile(
|
child: SceneListTile(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
assetPath: taskItem.icon,
|
leadingWidget: SvgPicture.asset(
|
||||||
iconsSize: 32,
|
taskItem.deviceIcon ?? taskItem.icon,
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
),
|
||||||
|
minLeadingWidth: 32,
|
||||||
titleWidget: BodyMedium(
|
titleWidget: BodyMedium(
|
||||||
text: taskItem.deviceName,
|
text: taskItem.deviceName,
|
||||||
style: context.bodyMedium.copyWith(
|
style: context.bodyMedium.copyWith(
|
||||||
|
|||||||
@ -41,7 +41,8 @@ class SceneDevicesBody extends StatelessWidget {
|
|||||||
text: e.name ?? '',
|
text: e.name ?? '',
|
||||||
textAlign: TextAlign.start,
|
textAlign: TextAlign.start,
|
||||||
style: context.bodyLarge.copyWith(
|
style: context.bodyLarge.copyWith(
|
||||||
color: (tabState is TabSelected) && tabState.roomId == e.id
|
color: (tabState is TabSelected) &&
|
||||||
|
tabState.roomId == e.id
|
||||||
? ColorsManager.textPrimaryColor
|
? ColorsManager.textPrimaryColor
|
||||||
: ColorsManager.textPrimaryColor.withOpacity(0.2),
|
: ColorsManager.textPrimaryColor.withOpacity(0.2),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user