Files
syncrow-web/lib/pages/routiens/widgets/routine_dialogs/automation_dialog.dart
ashrafzarkanisala 938f8c6b51 update scene debug
2024-12-01 00:42:00 +03:00

105 lines
3.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
import 'package:syncrow_web/pages/routiens/models/device_functions.dart';
import 'package:syncrow_web/pages/routiens/widgets/dialog_header.dart';
import 'package:syncrow_web/pages/routiens/widgets/dialog_footer.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
class AutomationDialog extends StatelessWidget {
final String automationName;
final String automationId;
final String uniqueCustomId;
const AutomationDialog({
super.key,
required this.automationName,
required this.automationId,
required this.uniqueCustomId,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<RoutineBloc, RoutineState>(
builder: (context, state) {
final isEnabled = state.automationActionExecutor == 'rule_enable';
return Dialog(
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
child: Container(
width: 400,
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
DialogHeader(automationName),
const SizedBox(height: 16),
ListTile(
leading:
SvgPicture.asset(Assets.acPower, width: 24, height: 24),
title: const Text('Enable'),
trailing: Radio<bool>(
value: true,
groupValue: isEnabled,
onChanged: (bool? value) {
if (value == true) {
context.read<RoutineBloc>().add(
const SetAutomationActionExecutor(
automationActionExecutor: 'rule_enable',
),
);
}
},
),
),
ListTile(
leading: SvgPicture.asset(Assets.acPowerOff,
width: 24, height: 24),
title: const Text('Disable'),
trailing: Radio<bool>(
value: false,
groupValue: isEnabled,
onChanged: (bool? value) {
if (value == false) {
context.read<RoutineBloc>().add(
const SetAutomationActionExecutor(
automationActionExecutor: 'rule_disable',
),
);
}
},
),
),
const SizedBox(height: 16),
DialogFooter(
onConfirm: () {
context.read<RoutineBloc>().add(
AddFunctionToRoutine(
[
DeviceFunctionData(
entityId: automationId,
functionCode: 'automation',
value: state.automationActionExecutor,
operationName: 'Automation',
),
],
uniqueCustomId,
),
);
Navigator.of(context).pop(true);
},
onCancel: () => Navigator.of(context).pop(false),
isConfirmEnabled: true,
dialogWidth: 400,
),
],
),
),
);
},
);
}
}