push add delay device

This commit is contained in:
ashrafzarkanisala
2024-11-24 09:07:01 +03:00
parent d241fc14e2
commit 5a9729fe10
10 changed files with 165 additions and 43 deletions

View File

@ -91,6 +91,7 @@ class ConditionsRoutinesDevicesView extends StatelessWidget {
'deviceId': 'delay',
'type': 'action',
'name': 'Delay the action',
'uniqueCustomId': '',
},
),
],

View File

@ -9,7 +9,11 @@ class DialogHeader extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const SizedBox(
height: 10,
),
Text(
title,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(

View File

@ -10,38 +10,44 @@ class DraggableCard extends StatelessWidget {
final String imagePath;
final String title;
final Map<String, dynamic> deviceData;
final EdgeInsetsGeometry? padding;
const DraggableCard({
super.key,
required this.imagePath,
required this.title,
required this.deviceData,
this.padding,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<RoutineBloc, RoutineState>(
builder: (context, state) {
final deviceFunctions = state.selectedFunctions[deviceData['uniqueCustomId']] ?? [];
final deviceFunctions =
state.selectedFunctions[deviceData['uniqueCustomId']] ?? [];
return Draggable<Map<String, dynamic>>(
data: deviceData,
feedback: Transform.rotate(
angle: -0.1,
child: _buildCardContent(context, deviceFunctions),
child:
_buildCardContent(context, deviceFunctions, padding: padding),
),
childWhenDragging: _buildGreyContainer(),
child: _buildCardContent(context, deviceFunctions),
child: _buildCardContent(context, deviceFunctions, padding: padding),
);
},
);
}
Widget _buildCardContent(BuildContext context, List<DeviceFunctionData> deviceFunctions) {
Widget _buildCardContent(
BuildContext context, List<DeviceFunctionData> deviceFunctions,
{EdgeInsetsGeometry? padding}) {
return Card(
color: ColorsManager.whiteColors,
child: Container(
padding: const EdgeInsets.all(8),
padding: padding ?? const EdgeInsets.all(16),
width: 110,
height: deviceFunctions.isEmpty ? 123 : null,
child: Column(

View File

@ -3,7 +3,6 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/bloc/device_mgmt_bloc/device_managment_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
import 'package:syncrow_web/pages/routiens/widgets/dragable_card.dart';
import 'package:uuid/uuid.dart';
class RoutineDevices extends StatelessWidget {
const RoutineDevices({super.key});
@ -41,6 +40,7 @@ class RoutineDevices extends StatelessWidget {
'deviceId': device.uuid,
'productType': device.productType,
'functions': device.functions,
'uniqueCustomId': '',
},
);
}).toList(),

View File

@ -3,8 +3,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
import 'package:syncrow_web/pages/routiens/helper/delay_helper.dart';
import 'package:syncrow_web/pages/routiens/helper/dialog_helper/device_dialog_helper.dart';
import 'package:syncrow_web/pages/routiens/widgets/dragable_card.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:uuid/uuid.dart';
class ThenContainer extends StatelessWidget {
@ -36,6 +38,8 @@ class ThenContainer extends StatelessWidget {
imagePath: item['imagePath']!,
title: item['title']!,
deviceData: item,
padding: EdgeInsets.symmetric(
horizontal: 4, vertical: 8),
))
.toList(),
),
@ -47,26 +51,32 @@ class ThenContainer extends StatelessWidget {
onWillAccept: (data) => data != null,
onAccept: (data) async {
final uniqueCustomId = const Uuid().v4();
data['uniqueCustomId'] = uniqueCustomId;
final result =
await DeviceDialogHelper.showDeviceDialog(context, data);
// if (result != null) {
// for (var function in routineBloc.state.selectedFunctions) {
// routineBloc.add(AddToThenContainer(
// {
// 'item': function,
// 'imagePath': data['imagePath'],
// 'title': data['name'],
// }
// ));
// }
// }
final mutableData = Map<String, dynamic>.from(data);
mutableData['uniqueCustomId'] = uniqueCustomId;
if (mutableData['deviceId'] == 'delay') {
final result = await DelayHelper.showDelayPickerDialog(
context, mutableData['uniqueCustomId']);
if (result != null) {
context.read<RoutineBloc>().add(AddToThenContainer({
...mutableData,
'imagePath': Assets.delay,
'title': 'Delay',
}));
}
return;
}
final result =
await DeviceDialogHelper.showDeviceDialog(context, mutableData);
if (result != null) {
context.read<RoutineBloc>().add(AddToThenContainer(data));
context.read<RoutineBloc>().add(AddToThenContainer(mutableData));
} else if (!['AC', '1G', '2G', '3G']
.contains(data['productType'])) {
context.read<RoutineBloc>().add(AddToThenContainer(data));
.contains(mutableData['productType'])) {
context.read<RoutineBloc>().add(AddToThenContainer(mutableData));
}
},
);