push countdown widget

This commit is contained in:
ashrafzarkanisala
2024-06-26 15:55:40 +03:00
parent 3ddd4ed197
commit ae47e48832
7 changed files with 45 additions and 72 deletions

View File

@ -149,19 +149,25 @@ List<SceneStaticFunction> threeGangFunctions(List<FunctionModel> functions) {
icon: Assets.assetsLightCountdown,
name: 'Light 1 CountDown',
code: 'countdown_1',
operationalValues: [],
operationalValues: [
StaticFunctionOperationHelper(icon: '', value: "12610"),
],
),
SceneStaticFunction(
icon: Assets.assetsLightCountdown,
name: 'Light 2 CountDown',
code: 'countdown_1',
operationalValues: [],
operationalValues: [
StaticFunctionOperationHelper(icon: '', value: "0"),
],
),
SceneStaticFunction(
icon: Assets.assetsLightCountdown,
name: 'Light 3 CountDown',
code: 'countdown_1',
operationalValues: [],
operationalValues: [
StaticFunctionOperationHelper(icon: '', value: "0"),
],
),
];
}

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:syncrow_app/features/devices/model/device_model.dart';
import 'package:syncrow_app/features/scene/helper/scene_helper.dart';
import 'package:syncrow_app/features/scene/model/scene_static_function.dart';
import 'package:syncrow_app/features/scene/widgets/alert_dialog_countdown.dart';
import 'package:syncrow_app/features/scene/widgets/alert_dialog_functions_body.dart';
import 'package:syncrow_app/features/scene/widgets/alert_dialog_temperature_body.dart';
import 'package:syncrow_app/features/scene/widgets/scene_list_tile.dart';
@ -102,8 +103,14 @@ class DeviceFunctionsView extends StatelessWidget with SceneHelper {
alertBody: functions[index].code == 'temp_set'
? AlertDialogTemperatureBody(
index: index, functions: functions)
: AlertDialogFunctionsOperationsBody(
index: index, functions: functions),
: functions[index].code.contains('countdown')
? AlertDialogCountdown(
durationValue: functions[index]
.operationalValues
.first
.value)
: AlertDialogFunctionsOperationsBody(
index: index, functions: functions),
title: functions[index].name,
onConfirm: () {},
);

View File

@ -1,19 +1,36 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class AlertDialogCountdown extends StatefulWidget {
const AlertDialogCountdown({super.key});
const AlertDialogCountdown({super.key, required this.durationValue});
final String durationValue;
@override
State<AlertDialogCountdown> createState() => _AlertDialogCountdownState();
}
class _AlertDialogCountdownState extends State<AlertDialogCountdown> {
int durationInSeconds = 0;
// Convert seconds to Duration.
Duration get duration =>
Duration(seconds: int.tryParse(widget.durationValue) ?? 0);
@override
Widget build(BuildContext context) {
return Row(
children: [
],
return Container(
height: 120,
color: Colors.white,
child: CupertinoTimerPicker(
itemExtent: 120,
mode: CupertinoTimerPickerMode.hm,
initialTimerDuration: duration,
onTimerDurationChanged: (newDuration) {
setState(() {
durationInSeconds = newDuration.inSeconds;
});
},
),
);
}
}

View File

@ -28,7 +28,7 @@ class _AlertDialogFunctionsOperationsBodyState
children: [
...widget.functions[widget.index].operationalValues.map(
(operation) => SceneListTile(
iconsSize: 22,
iconsSize: 25,
minLeadingWidth: 15,
padding: const EdgeInsets.symmetric(horizontal: 16),
assetPath: operation.icon,

View File

@ -47,10 +47,10 @@ class SceneListTile extends StatelessWidget {
width: iconsSize,
child: SvgPicture.asset(
assetPath ?? Assets.assetsImagesLogo,
width: 20,
height: assetHeight ?? 32,
width: iconsSize,
height: assetHeight ?? 35,
alignment: Alignment.center,
fit: BoxFit.fill,
fit: BoxFit.contain,
),
)
: null),