diff --git a/assets/icons/routine/automation.svg b/assets/icons/routine/automation.svg
new file mode 100644
index 00000000..a67aadaf
--- /dev/null
+++ b/assets/icons/routine/automation.svg
@@ -0,0 +1,23 @@
+
diff --git a/lib/pages/common/text_field/custom_text_field.dart b/lib/pages/common/text_field/custom_text_field.dart
index 3ba71cd1..bb574e74 100644
--- a/lib/pages/common/text_field/custom_text_field.dart
+++ b/lib/pages/common/text_field/custom_text_field.dart
@@ -109,13 +109,25 @@ class CustomTextField extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
- Text(
- title,
- style: context.textTheme.bodyMedium!.copyWith(
- fontSize: 13,
- fontWeight: FontWeight.w600,
- color: const Color(0xff000000),
- ),
+ Row(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Visibility(
+ visible: isRequired == true,
+ child: Text('* ',
+ style: context.textTheme.bodyMedium!
+ .copyWith(color: Colors.red, fontSize: 13)),
+ ),
+ Text(
+ title,
+ style: context.textTheme.bodyMedium!.copyWith(
+ fontSize: 13,
+ fontWeight: FontWeight.w600,
+ color: const Color(0xff000000),
+ ),
+ ),
+ ],
),
const SizedBox(height: 8),
Material(
diff --git a/lib/pages/routiens/helper/dialog_helper/device_dialog_helper.dart b/lib/pages/routiens/helper/dialog_helper/device_dialog_helper.dart
index fcb8e740..33cfffee 100644
--- a/lib/pages/routiens/helper/dialog_helper/device_dialog_helper.dart
+++ b/lib/pages/routiens/helper/dialog_helper/device_dialog_helper.dart
@@ -1,10 +1,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/ac_helper.dart';
-import 'package:syncrow_web/pages/routiens/helper/one_gang_switch_helper.dart';
-import 'package:syncrow_web/pages/routiens/helper/three_gang_switch_helper.dart';
-import 'package:syncrow_web/pages/routiens/helper/two_gang_switch_helper.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/ac_dialog.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/one_gang_switch_dialog.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/three_gang_switch_dialog.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/two_gang_switch_dialog.dart';
import 'package:syncrow_web/pages/routiens/models/device_functions.dart';
class DeviceDialogHelper {
diff --git a/lib/pages/routiens/helper/duration_format_helper.dart b/lib/pages/routiens/helper/duration_format_helper.dart
new file mode 100644
index 00000000..1f22c9b2
--- /dev/null
+++ b/lib/pages/routiens/helper/duration_format_helper.dart
@@ -0,0 +1,15 @@
+class DurationFormatMixin {
+ static String formatDuration(int seconds) {
+ if (seconds >= 3600) {
+ final hours = (seconds / 3600).floor();
+ final remainingMinutes = ((seconds % 3600) / 60).floor();
+ final remainingSeconds = seconds % 60;
+ return '$hours h ${remainingMinutes}m ${remainingSeconds}s';
+ } else if (seconds >= 60) {
+ final minutes = (seconds / 60).floor();
+ final remainingSeconds = seconds % 60;
+ return '$minutes m ${remainingSeconds}s';
+ }
+ return '${seconds}s';
+ }
+}
diff --git a/lib/pages/routiens/models/ac/ac_function.dart b/lib/pages/routiens/models/ac/ac_function.dart
index e5fa78ba..8feccda7 100644
--- a/lib/pages/routiens/models/ac/ac_function.dart
+++ b/lib/pages/routiens/models/ac/ac_function.dart
@@ -73,9 +73,9 @@ class TempSetFunction extends ACFunction {
final int step;
TempSetFunction({required super.deviceId, required super.deviceName})
- : min = 200,
+ : min = 160,
max = 300,
- step = 5,
+ step = 1,
super(
code: 'temp_set',
operationName: 'Set Temperature',
diff --git a/lib/pages/routiens/models/routine_model.dart b/lib/pages/routiens/models/routine_model.dart
index 8035b044..e2075579 100644
--- a/lib/pages/routiens/models/routine_model.dart
+++ b/lib/pages/routiens/models/routine_model.dart
@@ -1,3 +1,5 @@
+import 'package:syncrow_web/utils/constants/assets.dart';
+
class ScenesModel {
final String id;
final String name;
@@ -13,12 +15,16 @@ class ScenesModel {
this.icon,
});
- factory ScenesModel.fromJson(Map json) => ScenesModel(
+ factory ScenesModel.fromJson(Map json,
+ {bool? isAutomation}) =>
+ ScenesModel(
id: json["id"],
name: json["name"] ?? '',
status: json["status"] ?? '',
type: json["type"] ?? '',
- icon: json["icon"] as String?,
+ icon: (isAutomation ?? false)
+ ? Assets.automation
+ : json["icon"] as String?,
);
Map toJson() => {
diff --git a/lib/pages/routiens/view/effective_period_view.dart b/lib/pages/routiens/view/effective_period_view.dart
index 5bcd9ff0..d9d9bc2f 100644
--- a/lib/pages/routiens/view/effective_period_view.dart
+++ b/lib/pages/routiens/view/effective_period_view.dart
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_bloc.dart';
-import 'package:syncrow_web/pages/routiens/helper/effictive_period_helper.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/effictive_period_dialog.dart';
import 'package:syncrow_web/pages/routiens/widgets/period_option.dart';
import 'package:syncrow_web/pages/routiens/widgets/repeat_days.dart';
import 'package:syncrow_web/utils/color_manager.dart';
diff --git a/lib/pages/routiens/widgets/conditions_routines_devices_view.dart b/lib/pages/routiens/widgets/conditions_routines_devices_view.dart
index 89b1f3f0..5cc31bf3 100644
--- a/lib/pages/routiens/widgets/conditions_routines_devices_view.dart
+++ b/lib/pages/routiens/widgets/conditions_routines_devices_view.dart
@@ -16,7 +16,7 @@ class ConditionsRoutinesDevicesView extends StatelessWidget {
return BlocBuilder(
builder: (context, state) {
return const Padding(
- padding: const EdgeInsets.symmetric(horizontal: 8.0),
+ padding: EdgeInsets.symmetric(horizontal: 8.0),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -65,13 +65,13 @@ class ConditionsRoutinesDevicesView extends StatelessWidget {
),
],
),
- const SizedBox(height: 10),
- const TitleRoutine(
+ SizedBox(height: 10),
+ TitleRoutine(
title: 'Conditions',
subtitle: '(THEN)',
),
- const SizedBox(height: 10),
- const Wrap(
+ SizedBox(height: 10),
+ Wrap(
spacing: 10,
runSpacing: 10,
children: [
@@ -96,20 +96,20 @@ class ConditionsRoutinesDevicesView extends StatelessWidget {
),
],
),
- const SizedBox(height: 10),
- const TitleRoutine(
+ SizedBox(height: 10),
+ TitleRoutine(
title: 'Routines',
subtitle: '(THEN)',
),
- const SizedBox(height: 10),
- const ScenesAndAutomations(),
- const SizedBox(height: 10),
- const TitleRoutine(
+ SizedBox(height: 10),
+ ScenesAndAutomations(),
+ SizedBox(height: 10),
+ TitleRoutine(
title: 'Devices',
subtitle: '',
),
- const SizedBox(height: 10),
- const RoutineDevices(),
+ SizedBox(height: 10),
+ RoutineDevices(),
],
),
),
diff --git a/lib/pages/routiens/widgets/dragable_card.dart b/lib/pages/routiens/widgets/dragable_card.dart
index ae66ce02..db8ad1c9 100644
--- a/lib/pages/routiens/widgets/dragable_card.dart
+++ b/lib/pages/routiens/widgets/dragable_card.dart
@@ -106,7 +106,7 @@ class DraggableCard extends StatelessWidget {
children: [
Expanded(
child: Text(
- '${function.operationName}: ${function.value}',
+ '${function.operationName}: ${_formatFunctionValue(function)}',
style: context.textTheme.bodySmall?.copyWith(
fontSize: 9,
color: ColorsManager.textGray,
@@ -144,6 +144,27 @@ class DraggableCard extends StatelessWidget {
);
}
+ String _formatFunctionValue(DeviceFunctionData function) {
+ if (function.functionCode == 'temp_set' ||
+ function.functionCode == 'temp_current') {
+ return '${(function.value / 10).toStringAsFixed(0)}°C';
+ } else if (function.functionCode.contains('countdown')) {
+ final seconds = function.value.toInt();
+ if (seconds >= 3600) {
+ final hours = (seconds / 3600).floor();
+ final remainingMinutes = ((seconds % 3600) / 60).floor();
+ final remainingSeconds = seconds % 60;
+ return '$hours h ${remainingMinutes}m ${remainingSeconds}s';
+ } else if (seconds >= 60) {
+ final minutes = (seconds / 60).floor();
+ final remainingSeconds = seconds % 60;
+ return '$minutes m ${remainingSeconds}s';
+ }
+ return '${seconds}s';
+ }
+ return function.value.toString();
+ }
+
Widget _buildGreyContainer() {
return Container(
height: 123,
diff --git a/lib/pages/routiens/widgets/period_option.dart b/lib/pages/routiens/widgets/period_option.dart
index acb69231..8a89e2f9 100644
--- a/lib/pages/routiens/widgets/period_option.dart
+++ b/lib/pages/routiens/widgets/period_option.dart
@@ -3,7 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_event.dart';
import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_state.dart';
-import 'package:syncrow_web/pages/routiens/helper/effictive_period_helper.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/effictive_period_dialog.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/app_enum.dart';
@@ -21,9 +21,12 @@ class PeriodOptions extends StatelessWidget {
builder: (context, state) {
return Column(
children: [
- _buildRadioOption(context, EnumEffectivePeriodOptions.allDay, '24 Hours'),
- _buildRadioOption(context, EnumEffectivePeriodOptions.daytime, 'Sunrise to Sunset'),
- _buildRadioOption(context, EnumEffectivePeriodOptions.night, 'Sunset to Sunrise'),
+ _buildRadioOption(
+ context, EnumEffectivePeriodOptions.allDay, '24 Hours'),
+ _buildRadioOption(context, EnumEffectivePeriodOptions.daytime,
+ 'Sunrise to Sunset'),
+ _buildRadioOption(
+ context, EnumEffectivePeriodOptions.night, 'Sunset to Sunrise'),
ListTile(
contentPadding: EdgeInsets.zero,
onTap: () => showCustomTimePicker(context),
@@ -34,7 +37,8 @@ class PeriodOptions extends StatelessWidget {
fontWeight: FontWeight.w400,
fontSize: 14),
),
- subtitle: state.customStartTime != null && state.customEndTime != null
+ subtitle: state.customStartTime != null &&
+ state.customEndTime != null
? Text(
'${"${state.customStartTime}"} - ${"${state.customEndTime}"}',
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
@@ -79,7 +83,9 @@ class PeriodOptions extends StatelessWidget {
subtitle: Text(
subtitle,
style: Theme.of(context).textTheme.bodyMedium!.copyWith(
- color: ColorsManager.textPrimaryColor, fontWeight: FontWeight.w400, fontSize: 10),
+ color: ColorsManager.textPrimaryColor,
+ fontWeight: FontWeight.w400,
+ fontSize: 10),
),
trailing: Radio(
value: value,
diff --git a/lib/pages/routiens/helper/ac_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/ac_dialog.dart
similarity index 99%
rename from lib/pages/routiens/helper/ac_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/ac_dialog.dart
index 10606b69..e8b87a16 100644
--- a/lib/pages/routiens/helper/ac_helper.dart
+++ b/lib/pages/routiens/widgets/routine_dialogs/ac_dialog.dart
@@ -327,11 +327,11 @@ class ACHelper {
String selectCode,
) {
return Slider(
- value: initialValue is int ? initialValue.toDouble() : 200.0,
+ value: initialValue is int ? initialValue.toDouble() : 160.0,
min: 160,
max: 300,
divisions: 14,
- label: '${((initialValue ?? 200) / 10).toInt()}°C',
+ label: '${((initialValue ?? 160) / 10).toInt()}°C',
onChanged: (value) {
context.read().add(
AddFunction(
diff --git a/lib/pages/routiens/helper/delay_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/delay_dialog.dart
similarity index 100%
rename from lib/pages/routiens/helper/delay_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/delay_dialog.dart
diff --git a/lib/pages/routiens/helper/effictive_period_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/effictive_period_dialog.dart
similarity index 100%
rename from lib/pages/routiens/helper/effictive_period_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/effictive_period_dialog.dart
diff --git a/lib/pages/routiens/helper/one_gang_switch_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/one_gang_switch_dialog.dart
similarity index 99%
rename from lib/pages/routiens/helper/one_gang_switch_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/one_gang_switch_dialog.dart
index c7d5d35a..ad25c657 100644
--- a/lib/pages/routiens/helper/one_gang_switch_helper.dart
+++ b/lib/pages/routiens/widgets/routine_dialogs/one_gang_switch_dialog.dart
@@ -4,6 +4,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart';
import 'package:syncrow_web/pages/routiens/bloc/functions_bloc/functions_bloc_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
+import 'package:syncrow_web/pages/routiens/helper/duration_format_helper.dart';
import 'package:syncrow_web/pages/routiens/models/device_functions.dart';
import 'package:syncrow_web/pages/routiens/models/gang_switches/base_switch_function.dart';
import 'package:syncrow_web/pages/routiens/models/gang_switches/switch_operational_value.dart';
@@ -277,7 +278,7 @@ class OneGangSwitchHelper {
borderRadius: BorderRadius.circular(10),
),
child: Text(
- '${initialValue ?? 0} sec',
+ DurationFormatMixin.formatDuration(initialValue?.toInt() ?? 0),
style: context.textTheme.headlineMedium!.copyWith(
color: ColorsManager.primaryColorWithOpacity,
),
diff --git a/lib/pages/routiens/helper/setting_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/setting_dialog.dart
similarity index 100%
rename from lib/pages/routiens/helper/setting_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/setting_dialog.dart
diff --git a/lib/pages/routiens/helper/three_gang_switch_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/three_gang_switch_dialog.dart
similarity index 99%
rename from lib/pages/routiens/helper/three_gang_switch_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/three_gang_switch_dialog.dart
index 4a4c5e02..4f0d85a7 100644
--- a/lib/pages/routiens/helper/three_gang_switch_helper.dart
+++ b/lib/pages/routiens/widgets/routine_dialogs/three_gang_switch_dialog.dart
@@ -4,6 +4,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart';
import 'package:syncrow_web/pages/routiens/bloc/functions_bloc/functions_bloc_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
+import 'package:syncrow_web/pages/routiens/helper/duration_format_helper.dart';
import 'package:syncrow_web/pages/routiens/models/device_functions.dart';
import 'package:syncrow_web/pages/routiens/models/gang_switches/base_switch_function.dart';
import 'package:syncrow_web/pages/routiens/models/gang_switches/switch_operational_value.dart';
@@ -279,7 +280,7 @@ class ThreeGangSwitchHelper {
borderRadius: BorderRadius.circular(10),
),
child: Text(
- '${initialValue ?? 0} sec',
+ DurationFormatMixin.formatDuration(initialValue?.toInt() ?? 0),
style: context.textTheme.headlineMedium!.copyWith(
color: ColorsManager.primaryColorWithOpacity,
),
diff --git a/lib/pages/routiens/helper/two_gang_switch_helper.dart b/lib/pages/routiens/widgets/routine_dialogs/two_gang_switch_dialog.dart
similarity index 99%
rename from lib/pages/routiens/helper/two_gang_switch_helper.dart
rename to lib/pages/routiens/widgets/routine_dialogs/two_gang_switch_dialog.dart
index 3805882a..8282bc7b 100644
--- a/lib/pages/routiens/helper/two_gang_switch_helper.dart
+++ b/lib/pages/routiens/widgets/routine_dialogs/two_gang_switch_dialog.dart
@@ -4,6 +4,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart';
import 'package:syncrow_web/pages/routiens/bloc/functions_bloc/functions_bloc_bloc.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
+import 'package:syncrow_web/pages/routiens/helper/duration_format_helper.dart';
import 'package:syncrow_web/pages/routiens/models/device_functions.dart';
import 'package:syncrow_web/pages/routiens/models/gang_switches/base_switch_function.dart';
import 'package:syncrow_web/pages/routiens/models/gang_switches/switch_operational_value.dart';
@@ -278,7 +279,7 @@ class TwoGangSwitchHelper {
borderRadius: BorderRadius.circular(10),
),
child: Text(
- '${initialValue ?? 0} sec',
+ DurationFormatMixin.formatDuration(initialValue?.toInt() ?? 0),
style: context.textTheme.headlineMedium!.copyWith(
color: ColorsManager.primaryColorWithOpacity,
),
diff --git a/lib/pages/routiens/widgets/routine_search_and_buttons.dart b/lib/pages/routiens/widgets/routine_search_and_buttons.dart
index 41a47c17..01352bf8 100644
--- a/lib/pages/routiens/widgets/routine_search_and_buttons.dart
+++ b/lib/pages/routiens/widgets/routine_search_and_buttons.dart
@@ -4,7 +4,7 @@ import 'package:syncrow_web/pages/common/buttons/default_button.dart';
import 'package:syncrow_web/pages/common/text_field/custom_text_field.dart';
import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart';
import 'package:syncrow_web/pages/routiens/helper/save_routine_helper.dart';
-import 'package:syncrow_web/pages/routiens/helper/setting_helper.dart';
+import 'package:syncrow_web/pages/routiens/widgets/routine_dialogs/setting_dialog.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/style.dart';
@@ -31,7 +31,9 @@ class RoutineSearchAndButtons extends StatelessWidget {
children: [
ConstrainedBox(
constraints: BoxConstraints(
- maxWidth: constraints.maxWidth > 700 ? 450 : constraints.maxWidth - 32),
+ maxWidth: constraints.maxWidth > 700
+ ? 450
+ : constraints.maxWidth - 32),
child: StatefulTextField(
title: 'Routine Name',
height: 40,
@@ -55,11 +57,14 @@ class RoutineSearchAndButtons extends StatelessWidget {
child: Center(
child: DefaultButton(
onPressed: () async {
- final result = await SettingHelper.showSettingDialog(
+ final result =
+ await SettingHelper.showSettingDialog(
context: context,
);
if (result != null) {
- context.read().add(AddSelectedIcon(result));
+ context
+ .read()
+ .add(AddSelectedIcon(result));
}
},
borderRadius: 15,
diff --git a/lib/pages/routiens/widgets/scenes_and_automations.dart b/lib/pages/routiens/widgets/scenes_and_automations.dart
index 633f9a82..7a26979c 100644
--- a/lib/pages/routiens/widgets/scenes_and_automations.dart
+++ b/lib/pages/routiens/widgets/scenes_and_automations.dart
@@ -34,7 +34,9 @@ class _ScenesAndAutomationsState extends State {
children: scenes.asMap().entries.map((entry) {
final scene = entry.value;
if (state.searchText != null && state.searchText!.isNotEmpty) {
- return scene.name.toLowerCase().contains(state.searchText!.toLowerCase())
+ return scene.name
+ .toLowerCase()
+ .contains(state.searchText!.toLowerCase())
? DraggableCard(
imagePath: Assets.logo,
title: scene.name,
@@ -49,7 +51,7 @@ class _ScenesAndAutomationsState extends State {
: Container();
} else {
return DraggableCard(
- imagePath: Assets.logo,
+ imagePath: scene.icon ?? Assets.loginLogo,
title: scene.name,
deviceData: {
'deviceId': scene.id,
diff --git a/lib/pages/routiens/widgets/then_container.dart b/lib/pages/routiens/widgets/then_container.dart
index d6c9500f..2bc65b0e 100644
--- a/lib/pages/routiens/widgets/then_container.dart
+++ b/lib/pages/routiens/widgets/then_container.dart
@@ -3,7 +3,7 @@
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/widgets/routine_dialogs/delay_dialog.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';
diff --git a/lib/services/routines_api.dart b/lib/services/routines_api.dart
index abf5099e..0ce106b2 100644
--- a/lib/services/routines_api.dart
+++ b/lib/services/routines_api.dart
@@ -93,7 +93,7 @@ class SceneApi {
expectedResponseModel: (json) {
List scenes = [];
for (var scene in json) {
- scenes.add(ScenesModel.fromJson(scene));
+ scenes.add(ScenesModel.fromJson(scene, isAutomation: true));
}
return scenes;
},
diff --git a/lib/utils/constants/assets.dart b/lib/utils/constants/assets.dart
index 6c542017..cffaf472 100644
--- a/lib/utils/constants/assets.dart
+++ b/lib/utils/constants/assets.dart
@@ -13,10 +13,12 @@ class Assets {
static const String rightLine = "assets/images/right_line.png";
static const String google = "assets/images/google.svg";
static const String facebook = "assets/images/facebook.svg";
- static const String invisiblePassword = "assets/images/Password_invisible.svg";
+ static const String invisiblePassword =
+ "assets/images/Password_invisible.svg";
static const String visiblePassword = "assets/images/password_visible.svg";
static const String accessIcon = "assets/images/access_icon.svg";
- static const String spaseManagementIcon = "assets/images/spase_management_icon.svg";
+ static const String spaseManagementIcon =
+ "assets/images/spase_management_icon.svg";
static const String devicesIcon = "assets/images/devices_icon.svg";
static const String moveinIcon = "assets/images/movein_icon.svg";
static const String constructionIcon = "assets/images/construction_icon.svg";
@@ -29,13 +31,15 @@ class Assets {
static const String emptyTable = "assets/images/empty_table.svg";
// General assets
- static const String motionlessDetection = "assets/icons/motionless_detection.svg";
+ static const String motionlessDetection =
+ "assets/icons/motionless_detection.svg";
static const String acHeating = "assets/icons/ac_heating.svg";
static const String acPowerOff = "assets/icons/ac_power_off.svg";
static const String acFanMiddle = "assets/icons/ac_fan_middle.svg";
static const String switchAlarmSound = "assets/icons/switch_alarm_sound.svg";
static const String resetOff = "assets/icons/reset_off.svg";
- static const String sensitivityOperationIcon = "assets/icons/sesitivity_operation_icon.svg";
+ static const String sensitivityOperationIcon =
+ "assets/icons/sesitivity_operation_icon.svg";
static const String motionDetection = "assets/icons/motion_detection.svg";
static const String freezing = "assets/icons/freezing.svg";
static const String indicator = "assets/icons/indicator.svg";
@@ -56,35 +60,56 @@ class Assets {
static const String celsiusDegrees = "assets/icons/celsius_degrees.svg";
static const String masterState = "assets/icons/master_state.svg";
static const String acPower = "assets/icons/ac_power.svg";
- static const String farDetectionFunction = "assets/icons/far_detection_function.svg";
+ static const String farDetectionFunction =
+ "assets/icons/far_detection_function.svg";
static const String nobodyTime = "assets/icons/nobody_time.svg";
// Automation functions
- static const String tempPasswordUnlock = "assets/icons/automation_functions/temp_password_unlock.svg";
- static const String doorlockNormalOpen = "assets/icons/automation_functions/doorlock_normal_open.svg";
- static const String doorbell = "assets/icons/automation_functions/doorbell.svg";
- static const String remoteUnlockViaApp = "assets/icons/automation_functions/remote_unlock_via_app.svg";
- static const String doubleLock = "assets/icons/automation_functions/double_lock.svg";
- static const String selfTestResult = "assets/icons/automation_functions/self_test_result.svg";
- static const String lockAlarm = "assets/icons/automation_functions/lock_alarm.svg";
- static const String presenceState = "assets/icons/automation_functions/presence_state.svg";
- static const String currentTemp = "assets/icons/automation_functions/current_temp.svg";
- static const String presence = "assets/icons/automation_functions/presence.svg";
- static const String residualElectricity = "assets/icons/automation_functions/residual_electricity.svg";
- static const String hijackAlarm = "assets/icons/automation_functions/hijack_alarm.svg";
- static const String passwordUnlock = "assets/icons/automation_functions/password_unlock.svg";
- static const String remoteUnlockRequest = "assets/icons/automation_functions/remote_unlock_req.svg";
- static const String cardUnlock = "assets/icons/automation_functions/card_unlock.svg";
+ static const String tempPasswordUnlock =
+ "assets/icons/automation_functions/temp_password_unlock.svg";
+ static const String doorlockNormalOpen =
+ "assets/icons/automation_functions/doorlock_normal_open.svg";
+ static const String doorbell =
+ "assets/icons/automation_functions/doorbell.svg";
+ static const String remoteUnlockViaApp =
+ "assets/icons/automation_functions/remote_unlock_via_app.svg";
+ static const String doubleLock =
+ "assets/icons/automation_functions/double_lock.svg";
+ static const String selfTestResult =
+ "assets/icons/automation_functions/self_test_result.svg";
+ static const String lockAlarm =
+ "assets/icons/automation_functions/lock_alarm.svg";
+ static const String presenceState =
+ "assets/icons/automation_functions/presence_state.svg";
+ static const String currentTemp =
+ "assets/icons/automation_functions/current_temp.svg";
+ static const String presence =
+ "assets/icons/automation_functions/presence.svg";
+ static const String residualElectricity =
+ "assets/icons/automation_functions/residual_electricity.svg";
+ static const String hijackAlarm =
+ "assets/icons/automation_functions/hijack_alarm.svg";
+ static const String passwordUnlock =
+ "assets/icons/automation_functions/password_unlock.svg";
+ static const String remoteUnlockRequest =
+ "assets/icons/automation_functions/remote_unlock_req.svg";
+ static const String cardUnlock =
+ "assets/icons/automation_functions/card_unlock.svg";
static const String motion = "assets/icons/automation_functions/motion.svg";
- static const String fingerprintUnlock = "assets/icons/automation_functions/fingerprint_unlock.svg";
+ static const String fingerprintUnlock =
+ "assets/icons/automation_functions/fingerprint_unlock.svg";
// Presence Sensor Assets
static const String sensorMotionIcon = "assets/icons/sensor_motion_ic.svg";
- static const String sensorPresenceIcon = "assets/icons/sensor_presence_ic.svg";
+ static const String sensorPresenceIcon =
+ "assets/icons/sensor_presence_ic.svg";
static const String sensorVacantIcon = "assets/icons/sensor_vacant_ic.svg";
- static const String illuminanceRecordIcon = "assets/icons/illuminance_record_ic.svg";
- static const String presenceRecordIcon = "assets/icons/presence_record_ic.svg";
- static const String helpDescriptionIcon = "assets/icons/help_description_ic.svg";
+ static const String illuminanceRecordIcon =
+ "assets/icons/illuminance_record_ic.svg";
+ static const String presenceRecordIcon =
+ "assets/icons/presence_record_ic.svg";
+ static const String helpDescriptionIcon =
+ "assets/icons/help_description_ic.svg";
static const String lightPulp = "assets/icons/light_pulb.svg";
static const String acDevice = "assets/icons/ac_device.svg";
@@ -158,7 +183,8 @@ class Assets {
//assets/icons/water_leak_normal.svg
static const String waterLeakNormal = 'assets/icons/water_leak_normal.svg';
//assets/icons/water_leak_detected.svg
- static const String waterLeakDetected = 'assets/icons/water_leak_detected.svg';
+ static const String waterLeakDetected =
+ 'assets/icons/water_leak_detected.svg';
//assets/icons/automation_records.svg
static const String automationRecords = 'assets/icons/automation_records.svg';
@@ -212,57 +238,100 @@ class Assets {
static const String delay = 'assets/icons/routine/delay.svg';
// Assets for functions_icons
- static const String assetsSensitivityFunction = "assets/icons/functions_icons/sensitivity.svg";
- static const String assetsSensitivityOperationIcon = "assets/icons/functions_icons/sesitivity_operation_icon.svg";
- static const String assetsAcPower = "assets/icons/functions_icons/ac_power.svg";
- static const String assetsAcPowerOFF = "assets/icons/functions_icons/ac_power_off.svg";
- static const String assetsChildLock = "assets/icons/functions_icons/child_lock.svg";
- static const String assetsFreezing = "assets/icons/functions_icons/freezing.svg";
- static const String assetsFanSpeed = "assets/icons/functions_icons/fan_speed.svg";
- static const String assetsAcCooling = "assets/icons/functions_icons/ac_cooling.svg";
- static const String assetsAcHeating = "assets/icons/functions_icons/ac_heating.svg";
- static const String assetsCelsiusDegrees = "assets/icons/functions_icons/celsius_degrees.svg";
- static const String assetsTempreture = "assets/icons/functions_icons/tempreture.svg";
- static const String assetsAcFanLow = "assets/icons/functions_icons/ac_fan_low.svg";
- static const String assetsAcFanMiddle = "assets/icons/functions_icons/ac_fan_middle.svg";
- static const String assetsAcFanHigh = "assets/icons/functions_icons/ac_fan_high.svg";
- static const String assetsAcFanAuto = "assets/icons/functions_icons/ac_fan_auto.svg";
- static const String assetsSceneChildLock = "assets/icons/functions_icons/scene_child_lock.svg";
- static const String assetsSceneChildUnlock = "assets/icons/functions_icons/scene_child_unlock.svg";
- static const String assetsSceneRefresh = "assets/icons/functions_icons/scene_refresh.svg";
- static const String assetsLightCountdown = "assets/icons/functions_icons/light_countdown.svg";
- static const String assetsFarDetection = "assets/icons/functions_icons/far_detection.svg";
- static const String assetsFarDetectionFunction = "assets/icons/functions_icons/far_detection_function.svg";
- static const String assetsIndicator = "assets/icons/functions_icons/indicator.svg";
- static const String assetsMotionDetection = "assets/icons/functions_icons/motion_detection.svg";
- static const String assetsMotionlessDetection = "assets/icons/functions_icons/motionless_detection.svg";
- static const String assetsNobodyTime = "assets/icons/functions_icons/nobody_time.svg";
- static const String assetsFactoryReset = "assets/icons/functions_icons/factory_reset.svg";
- static const String assetsMasterState = "assets/icons/functions_icons/master_state.svg";
- static const String assetsSwitchAlarmSound = "assets/icons/functions_icons/switch_alarm_sound.svg";
- static const String assetsResetOff = "assets/icons/functions_icons/reset_off.svg";
+ static const String assetsSensitivityFunction =
+ "assets/icons/functions_icons/sensitivity.svg";
+ static const String assetsSensitivityOperationIcon =
+ "assets/icons/functions_icons/sesitivity_operation_icon.svg";
+ static const String assetsAcPower =
+ "assets/icons/functions_icons/ac_power.svg";
+ static const String assetsAcPowerOFF =
+ "assets/icons/functions_icons/ac_power_off.svg";
+ static const String assetsChildLock =
+ "assets/icons/functions_icons/child_lock.svg";
+ static const String assetsFreezing =
+ "assets/icons/functions_icons/freezing.svg";
+ static const String assetsFanSpeed =
+ "assets/icons/functions_icons/fan_speed.svg";
+ static const String assetsAcCooling =
+ "assets/icons/functions_icons/ac_cooling.svg";
+ static const String assetsAcHeating =
+ "assets/icons/functions_icons/ac_heating.svg";
+ static const String assetsCelsiusDegrees =
+ "assets/icons/functions_icons/celsius_degrees.svg";
+ static const String assetsTempreture =
+ "assets/icons/functions_icons/tempreture.svg";
+ static const String assetsAcFanLow =
+ "assets/icons/functions_icons/ac_fan_low.svg";
+ static const String assetsAcFanMiddle =
+ "assets/icons/functions_icons/ac_fan_middle.svg";
+ static const String assetsAcFanHigh =
+ "assets/icons/functions_icons/ac_fan_high.svg";
+ static const String assetsAcFanAuto =
+ "assets/icons/functions_icons/ac_fan_auto.svg";
+ static const String assetsSceneChildLock =
+ "assets/icons/functions_icons/scene_child_lock.svg";
+ static const String assetsSceneChildUnlock =
+ "assets/icons/functions_icons/scene_child_unlock.svg";
+ static const String assetsSceneRefresh =
+ "assets/icons/functions_icons/scene_refresh.svg";
+ static const String assetsLightCountdown =
+ "assets/icons/functions_icons/light_countdown.svg";
+ static const String assetsFarDetection =
+ "assets/icons/functions_icons/far_detection.svg";
+ static const String assetsFarDetectionFunction =
+ "assets/icons/functions_icons/far_detection_function.svg";
+ static const String assetsIndicator =
+ "assets/icons/functions_icons/indicator.svg";
+ static const String assetsMotionDetection =
+ "assets/icons/functions_icons/motion_detection.svg";
+ static const String assetsMotionlessDetection =
+ "assets/icons/functions_icons/motionless_detection.svg";
+ static const String assetsNobodyTime =
+ "assets/icons/functions_icons/nobody_time.svg";
+ static const String assetsFactoryReset =
+ "assets/icons/functions_icons/factory_reset.svg";
+ static const String assetsMasterState =
+ "assets/icons/functions_icons/master_state.svg";
+ static const String assetsSwitchAlarmSound =
+ "assets/icons/functions_icons/switch_alarm_sound.svg";
+ static const String assetsResetOff =
+ "assets/icons/functions_icons/reset_off.svg";
// Assets for automation_functions
- static const String assetsCardUnlock = "assets/icons/functions_icons/automation_functions/card_unlock.svg";
- static const String assetsDoorbell = "assets/icons/functions_icons/automation_functions/doorbell.svg";
+ static const String assetsCardUnlock =
+ "assets/icons/functions_icons/automation_functions/card_unlock.svg";
+ static const String assetsDoorbell =
+ "assets/icons/functions_icons/automation_functions/doorbell.svg";
static const String assetsDoorlockNormalOpen =
"assets/icons/functions_icons/automation_functions/doorlock_normal_open.svg";
- static const String assetsDoubleLock = "assets/icons/functions_icons/automation_functions/double_lock.svg";
+ static const String assetsDoubleLock =
+ "assets/icons/functions_icons/automation_functions/double_lock.svg";
static const String assetsFingerprintUnlock =
"assets/icons/functions_icons/automation_functions/fingerprint_unlock.svg";
- static const String assetsHijackAlarm = "assets/icons/functions_icons/automation_functions/hijack_alarm.svg";
- static const String assetsLockAlarm = "assets/icons/functions_icons/automation_functions/lock_alarm.svg";
- static const String assetsPasswordUnlock = "assets/icons/functions_icons/automation_functions/password_unlock.svg";
- static const String assetsRemoteUnlockReq = "assets/icons/functions_icons/automation_functions/remote_unlock_req.svg";
+ static const String assetsHijackAlarm =
+ "assets/icons/functions_icons/automation_functions/hijack_alarm.svg";
+ static const String assetsLockAlarm =
+ "assets/icons/functions_icons/automation_functions/lock_alarm.svg";
+ static const String assetsPasswordUnlock =
+ "assets/icons/functions_icons/automation_functions/password_unlock.svg";
+ static const String assetsRemoteUnlockReq =
+ "assets/icons/functions_icons/automation_functions/remote_unlock_req.svg";
static const String assetsRemoteUnlockViaApp =
"assets/icons/functions_icons/automation_functions/remote_unlock_via_app.svg";
static const String assetsResidualElectricity =
"assets/icons/functions_icons/automation_functions/residual_electricity.svg";
static const String assetsTempPasswordUnlock =
"assets/icons/functions_icons/automation_functions/temp_password_unlock.svg";
- static const String assetsSelfTestResult = "assets/icons/functions_icons/automation_functions/self_test_result.svg";
- static const String assetsPresence = "assets/icons/functions_icons/automation_functions/presence.svg";
- static const String assetsMotion = "assets/icons/functions_icons/automation_functions/motion.svg";
- static const String assetsCurrentTemp = "assets/icons/functions_icons/automation_functions/current_temp.svg";
- static const String assetsPresenceState = "assets/icons/functions_icons/automation_functions/presence_state.svg";
+ static const String assetsSelfTestResult =
+ "assets/icons/functions_icons/automation_functions/self_test_result.svg";
+ static const String assetsPresence =
+ "assets/icons/functions_icons/automation_functions/presence.svg";
+ static const String assetsMotion =
+ "assets/icons/functions_icons/automation_functions/motion.svg";
+ static const String assetsCurrentTemp =
+ "assets/icons/functions_icons/automation_functions/current_temp.svg";
+ static const String assetsPresenceState =
+ "assets/icons/functions_icons/automation_functions/presence_state.svg";
+ //assets/icons/routine/automation.svg
+ static const String automation = 'assets/icons/routine/automation.svg';
}
diff --git a/pubspec.lock b/pubspec.lock
index 3e12d6c5..cfd8b310 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -57,6 +57,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.18.0"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.6"
cupertino_icons:
dependency: "direct main"
description:
@@ -137,6 +145,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "7.0.0"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
fl_chart:
dependency: "direct main"
description:
@@ -533,6 +549,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.10.0"
+ sprintf:
+ dependency: transitive
+ description:
+ name: sprintf
+ sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
stack_trace:
dependency: transitive
description:
@@ -589,6 +613,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.2"
+ uuid:
+ dependency: "direct main"
+ description:
+ name: uuid
+ sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.1"
vector_graphics:
dependency: transitive
description: