push temp list logic before saving

This commit is contained in:
ashrafzarkanisala
2024-06-30 21:22:33 +03:00
parent 6699866ff0
commit cc6b754845
16 changed files with 281 additions and 71 deletions
@@ -1,14 +1,22 @@
// ignore_for_file: must_be_immutable
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/create_scene/create_scene_bloc.dart';
import 'package:syncrow_app/features/scene/model/scene_static_function.dart';
class AlertDialogCountdown extends StatefulWidget {
AlertDialogCountdown(
{super.key, required this.durationValue, this.functionValue});
AlertDialogCountdown({
super.key,
required this.durationValue,
this.functionValue,
required this.function,
});
final int durationValue;
dynamic functionValue;
SceneStaticFunction function;
@override
State<AlertDialogCountdown> createState() => _AlertDialogCountdownState();
@@ -18,6 +26,17 @@ class _AlertDialogCountdownState extends State<AlertDialogCountdown> {
@override
didChangeDependencies() {
super.didChangeDependencies();
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
for (var element in tempTaskList) {
if (element.code == widget.function.code) {
durationInSeconds = element.functionValue;
} else {
context
.read<CreateSceneBloc>()
.add(RemoveFromSelectedValueById(code: widget.function.code));
}
}
if (widget.functionValue != null) {
setState(() {
durationInSeconds = widget.functionValue;
@@ -41,9 +60,8 @@ class _AlertDialogCountdownState extends State<AlertDialogCountdown> {
setState(() {
durationInSeconds = newDuration.inSeconds;
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: newDuration.inSeconds));
context.read<CreateSceneBloc>().add(SelectedValueEvent(
value: newDuration.inSeconds, code: widget.function.code));
},
),
);
@@ -1,3 +1,5 @@
// ignore_for_file: must_be_immutable
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/create_scene/create_scene_bloc.dart';
@@ -26,6 +28,19 @@ class _AlertDialogFunctionsOperationsBodyState
@override
didChangeDependencies() {
super.didChangeDependencies();
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
if (tempTaskList.isEmpty) {
context.read<CreateSceneBloc>().add(const ClearTempTaskListEvent());
}
for (var element in tempTaskList) {
if (element.code == widget.functions[widget.index].code) {
groupValue = element.functionValue;
} else {
context.read<CreateSceneBloc>().add(RemoveFromSelectedValueById(
code: widget.functions[widget.index].code));
}
}
if (widget.functionValue != null) {
setState(() {
groupValue = widget.functionValue;
@@ -60,18 +75,18 @@ class _AlertDialogFunctionsOperationsBodyState
setState(() {
groupValue = value;
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: value!));
context.read<CreateSceneBloc>().add(SelectedValueEvent(
value: value!,
code: widget.functions[widget.index].code));
},
),
onPressed: () {
setState(() {
groupValue = operation.value;
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: groupValue));
context.read<CreateSceneBloc>().add(SelectedValueEvent(
value: groupValue,
code: widget.functions[widget.index].code));
},
);
},
@@ -1,3 +1,5 @@
// ignore_for_file: must_be_immutable
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -31,6 +33,16 @@ class _AlertDialogTemperatureBodyState
@override
didChangeDependencies() {
super.didChangeDependencies();
final tempTaskList = context.read<CreateSceneBloc>().tempTasksList;
for (var element in tempTaskList) {
if (element.code == widget.functions[widget.index].code) {
temperature = element.functionValue;
} else {
context.read<CreateSceneBloc>().add(RemoveFromSelectedValueById(
code: widget.functions[widget.index].code));
}
}
if (widget.functionValue != null) {
setState(() {
temperature = widget.functionValue;
@@ -50,9 +62,9 @@ class _AlertDialogTemperatureBodyState
temperature--;
}
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: temperature * 10));
context.read<CreateSceneBloc>().add(SelectedValueEvent(
value: temperature * 10,
code: widget.functions[widget.index].code));
},
icon: const Icon(
Icons.remove,
@@ -93,9 +105,9 @@ class _AlertDialogTemperatureBodyState
temperature++;
}
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: temperature * 10));
context.read<CreateSceneBloc>().add(SelectedValueEvent(
value: temperature * 10,
code: widget.functions[widget.index].code));
},
icon: const Icon(
Icons.add,
@@ -1,3 +1,5 @@
// ignore_for_file: must_be_immutable
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -61,6 +63,7 @@ class ThenAddedTasksContainer extends StatelessWidget {
durationValue:
listOfSceneStaticFunction![index!].functionValue,
functionValue: taskList.functionValue,
function: listOfSceneStaticFunction![index!],
)
: AlertDialogFunctionsOperationsBody(
index: index!,
@@ -69,7 +72,7 @@ class ThenAddedTasksContainer extends StatelessWidget {
title: listOfSceneStaticFunction![index!].operationName,
onConfirm: () {
// final selectedValue = context.read<CreateSceneBloc>().selectedValue;
// context.read<CreateSceneBloc>().add(AddTaskEvent(
// context.read<CreateSceneBloc>().add(TempHoldSceneTasksEvent(
// deviceControlModel: DeviceControlModel(
// deviceId: device.uuid,
// code: functions[index].code,
@@ -111,7 +114,7 @@ class ThenAddedTasksContainer extends StatelessWidget {
context
.read<CreateSceneBloc>()
.add(RemoveTaskEvent(taskId: removeFunctionById));
.add(RemoveTaskByIdEvent(taskId: removeFunctionById));
String removeFunction =
"${taskList.operationName} with value ${taskList.operationalValues.first.value}";
@@ -52,8 +52,8 @@ class ThenDefaultContainer extends StatelessWidget {
const LightDivider(),
sceneId.isNotEmpty
? BlocProvider(
create: (context) =>
CreateSceneBloc()..add(FetchSceneTasks(sceneId: sceneId)),
create: (context) => CreateSceneBloc()
..add(FetchSceneTasksEvent(sceneId: sceneId)),
child: BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
if (state is CreateSceneLoading) {
@@ -69,12 +69,14 @@ class SceneItem extends StatelessWidget {
],
),
const SizedBox(height: 10),
BodyMedium(
text: scene.name,
maxLines: 1,
overflow: TextOverflow.fade,
fontWeight: FontWeight.bold,
fontSize: 16,
FittedBox(
child: BodyMedium(
text: scene.name,
maxLines: 1,
overflow: TextOverflow.fade,
fontWeight: FontWeight.bold,
fontSize: 16,
),
),
],
),