push fixes

This commit is contained in:
ashrafzarkanisala
2024-08-01 03:11:03 +03:00
parent a242876e16
commit b66fbc32e7
21 changed files with 647 additions and 331 deletions

View File

@ -24,17 +24,12 @@ class DeviceFunctionsView extends StatelessWidget
@override
Widget build(BuildContext context) {
/// this whole widget needs a refactor later
///
/// static functions based on type
final device = (ModalRoute.of(context)?.settings.arguments as Map)['device']
as DeviceModel;
final isAutomation = (ModalRoute.of(context)?.settings.arguments
as Map)['isAutomationDeviceStatus'] as bool;
/// static custom functions based on type
/// used for now until later backend fixes
List<SceneStaticFunction> functions = [];
if (device.functions.isNotEmpty) {
functions = getFunctionsWithIcons(
@ -47,128 +42,133 @@ class DeviceFunctionsView extends StatelessWidget
}
return DefaultScaffold(
title: getTitle(type: device.productType),
actions: [
TextButton(
onPressed: () {
context
.read<CreateSceneBloc>()
.add(AddTaskEvent(isAutomation: isAutomation));
navigateToRoute(context, Routes.sceneTasksRoute);
},
child: BodyMedium(
text: 'Save',
fontWeight: FontWeight.normal,
fontColor: ColorsManager.secondaryColor.withOpacity(0.6),
),
),
],
leading: TextButton(
title: getTitle(type: device.productType),
actions: [
TextButton(
onPressed: () {
final automationSelectedValue =
context.read<CreateSceneBloc>().automationSelectedValues;
for (var element in device.functions) {
if (automationSelectedValue.containsKey(element.code)) {
context.read<CreateSceneBloc>().add(RemoveTempTaskByIdEvent(
code: element.code!, isAutomation: true));
context.read<CreateSceneBloc>().add(RemoveFromSelectedValueById(
code: element.code!, isAutomation: true));
}
}
final selectedValue =
context.read<CreateSceneBloc>().selectedValues;
for (var element in device.functions) {
if (selectedValue.containsKey(element.code)) {
context
.read<CreateSceneBloc>()
.add(RemoveTempTaskByIdEvent(code: element.code!));
context
.read<CreateSceneBloc>()
.add(RemoveFromSelectedValueById(code: element.code!));
}
}
Navigator.pop(context);
context
.read<CreateSceneBloc>()
.add(AddTaskEvent(isAutomation: isAutomation));
navigateToRoute(context, Routes.sceneTasksRoute);
},
child: BodyMedium(
text: 'Cancel',
text: 'Save',
fontWeight: FontWeight.normal,
fontColor: ColorsManager.textPrimaryColor.withOpacity(0.6),
fontColor: ColorsManager.secondaryColor.withOpacity(0.6),
),
),
leadingWidth: 80,
padding: EdgeInsets.zero,
child: ListView.builder(
shrinkWrap: true,
itemCount: functions.length,
padding: const EdgeInsets.only(top: 24.0),
itemBuilder: (context, index) {
return DefaultContainer(
padding: index == 0
? const EdgeInsets.only(top: 8)
: index == functions.length - 1
? const EdgeInsets.only(bottom: 8)
: EdgeInsets.zero,
margin: EdgeInsets.zero,
borderRadius: index == 0
? const BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20))
: index == functions.length - 1
? const BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20))
: BorderRadius.zero,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
return SceneListTile(
iconsSize: 22,
minLeadingWidth: 20,
assetPath: functions[index].icon,
titleString: functions[index].operationName,
trailingWidget: const Row(
mainAxisSize: MainAxisSize.min,
children: [
/// selected value or the default value
// BodyMedium(text: ),
Icon(
Icons.arrow_forward_ios_rounded,
color: ColorsManager.greyColor,
size: 16,
),
],
),
onPressed: () {
if (isAutomation) {
_showAutomationDialog(
context,
functions[index],
device,
);
} else {
_showTabToRunDialog(
context,
functions[index],
device,
);
}
},
);
},
),
index != functions.length - 1
? SizedBox(
width: context.width * 0.8,
child: const LightDivider())
: const SizedBox(),
],
),
);
},
));
],
leading: TextButton(
onPressed: () {
_cancelOperation(context, device, isAutomation);
},
child: BodyMedium(
text: 'Cancel',
fontWeight: FontWeight.normal,
fontColor: ColorsManager.textPrimaryColor.withOpacity(0.6),
),
),
leadingWidth: 80,
padding: EdgeInsets.zero,
child: ListView.builder(
shrinkWrap: true,
itemCount: functions.length,
padding: const EdgeInsets.only(top: 24.0),
itemBuilder: (context, index) {
return DefaultContainer(
padding: index == 0
? const EdgeInsets.only(top: 8)
: index == functions.length - 1
? const EdgeInsets.only(bottom: 8)
: EdgeInsets.zero,
margin: EdgeInsets.zero,
borderRadius: index == 0
? const BorderRadius.only(
topLeft: Radius.circular(20), topRight: Radius.circular(20))
: index == functions.length - 1
? const BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20))
: BorderRadius.zero,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
return SceneListTile(
iconsSize: 22,
minLeadingWidth: 20,
assetPath: functions[index].icon,
titleString: functions[index].operationName,
trailingWidget: const Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.arrow_forward_ios_rounded,
color: ColorsManager.greyColor,
size: 16,
),
],
),
onPressed: () {
if (isAutomation) {
_showAutomationDialog(
context,
functions[index],
device,
);
} else {
_showTabToRunDialog(
context,
functions[index],
device,
);
}
},
);
},
),
index != functions.length - 1
? SizedBox(
width: context.width * 0.8, child: const LightDivider())
: const SizedBox(),
],
),
);
},
),
);
}
void _cancelOperation(
BuildContext context, DeviceModel device, bool isAutomation) {
final createSceneBloc = context.read<CreateSceneBloc>();
final automationSelectedValue = createSceneBloc.automationSelectedValues;
if (automationSelectedValue.isNotEmpty) {
for (var element in device.functions) {
if (automationSelectedValue.containsKey(element.code)) {
createSceneBloc.add(
RemoveTempTaskByIdEvent(code: element.code!, isAutomation: true));
createSceneBloc.add(RemoveFromSelectedValueById(
code: element.code!, isAutomation: true));
}
}
}
final selectedValue = createSceneBloc.selectedValues;
if (selectedValue.isNotEmpty) {
for (var element in device.functions) {
if (selectedValue.containsKey(element.code)) {
createSceneBloc.add(RemoveTempTaskByIdEvent(code: element.code!));
createSceneBloc.add(RemoveFromSelectedValueById(code: element.code!));
}
}
}
Navigator.pop(context);
createSceneBloc.add(const ClearTempTaskListEvent(isAutomation: false));
createSceneBloc.add(const ClearTempTaskListEvent(isAutomation: true));
}
void _showTabToRunDialog(