diff --git a/assets/icons/add.svg b/assets/icons/add.svg
new file mode 100644
index 0000000..bbd96d7
--- /dev/null
+++ b/assets/icons/add.svg
@@ -0,0 +1,3 @@
+
diff --git a/lib/features/scene/enum/create_scene_enum.dart b/lib/features/scene/enum/create_scene_enum.dart
new file mode 100644
index 0000000..6a65abc
--- /dev/null
+++ b/lib/features/scene/enum/create_scene_enum.dart
@@ -0,0 +1,4 @@
+enum CreateSceneEnum {
+ tabToRun,
+ deviceStatusChanges,
+}
diff --git a/lib/features/scene/view/create_scene_view.dart b/lib/features/scene/view/create_scene_view.dart
index 8c3bd95..6d2b46d 100644
--- a/lib/features/scene/view/create_scene_view.dart
+++ b/lib/features/scene/view/create_scene_view.dart
@@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
+import 'package:syncrow_app/features/scene/enum/create_scene_enum.dart';
+import 'package:syncrow_app/features/scene/view/widgets/scene_list_tile.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
-import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
-import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
+
import 'package:syncrow_app/generated/assets.dart';
-import 'package:syncrow_app/utils/context_extension.dart';
-import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
+import 'package:syncrow_app/navigation/routing_constants.dart';
+
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class CreateSceneView extends StatelessWidget {
@@ -14,61 +14,41 @@ class CreateSceneView extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return const DefaultScaffold(
+ return DefaultScaffold(
title: StringsManager.createScene,
- padding: EdgeInsets.only(top: 24),
+ padding: const EdgeInsets.only(top: 24),
child: Column(
children: [
DefaultContainer(
width: double.infinity,
- margin: EdgeInsets.symmetric(vertical: 4),
- child: SceneListTile(
+ margin: const EdgeInsets.symmetric(vertical: 4),
+ child: const SceneListTile(
assetPath: Assets.handClickIcon,
title: StringsManager.tapToRun,
subtitle: StringsManager.turnOffAllLights,
),
+ onTap: () => Navigator.pushNamed(
+ context,
+ Routes.sceneTasksRoute,
+ arguments: CreateSceneEnum.tabToRun,
+ ),
),
DefaultContainer(
width: double.infinity,
- margin: EdgeInsets.symmetric(vertical: 4),
- child: SceneListTile(
+ margin: const EdgeInsets.symmetric(vertical: 4),
+ child: const SceneListTile(
assetPath: Assets.refreshIcon,
title: StringsManager.whenDeviceStatusChanges,
subtitle: StringsManager.whenUnusualActivityIsDetected,
),
+ onTap: () => Navigator.pushNamed(
+ context,
+ Routes.sceneTasksRoute,
+ arguments: CreateSceneEnum.deviceStatusChanges,
+ ),
),
],
),
);
}
}
-
-class SceneListTile extends StatelessWidget {
- const SceneListTile({
- super.key,
- required this.assetPath,
- required this.title,
- required this.subtitle,
- });
- final String assetPath;
- final String title;
- final String subtitle;
-
- @override
- Widget build(BuildContext context) {
- return ListTile(
- minLeadingWidth: 40,
- leading: SvgPicture.asset(
- assetPath,
- width: 20,
- height: 32,
- ),
- title: BodyMedium(text: title),
- subtitle: BodySmall(
- text: subtitle,
- style: context.bodySmall.copyWith(
- fontWeight: FontWeight.w400, color: ColorsManager.greyColor),
- ),
- );
- }
-}
diff --git a/lib/features/scene/view/scene_add_tasks.dart b/lib/features/scene/view/scene_add_tasks.dart
new file mode 100644
index 0000000..2c90173
--- /dev/null
+++ b/lib/features/scene/view/scene_add_tasks.dart
@@ -0,0 +1,70 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+import 'package:syncrow_app/features/auth/view/widgets/login_divider.dart';
+import 'package:syncrow_app/features/scene/view/widgets/scene_list_tile.dart';
+import 'package:syncrow_app/features/shared_widgets/default_button.dart';
+import 'package:syncrow_app/features/shared_widgets/default_container.dart';
+import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
+import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
+import 'package:syncrow_app/generated/assets.dart';
+import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
+import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
+
+class SceneAddTasksView extends StatelessWidget {
+ const SceneAddTasksView({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return DefaultScaffold(
+ title: StringsManager.createScene,
+ padding: const EdgeInsets.only(top: 24),
+ actions: [
+ SizedBox(
+ width: 40,
+ child: GestureDetector(
+ child: SvgPicture.asset(
+ Assets.assetsIconsSettings,
+ colorFilter: const ColorFilter.mode(
+ ColorsManager.textPrimaryColor,
+ BlendMode.srcIn,
+ ),
+ ),
+ ),
+ ),
+ ],
+ child: SingleChildScrollView(
+ child: Column(
+ children: [
+ DefaultContainer(
+ padding: EdgeInsets.zero,
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ const BodyLarge(
+ text: 'IF',
+ ),
+ SvgPicture.asset(Assets.addIcon),
+ ],
+ ),
+ ),
+ const Divider(
+ color: ColorsManager.greyColor,
+ ),
+ const SceneListTile(
+ assetPath: Assets.handClickIcon,
+ title: StringsManager.tapToRun,
+ )
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/features/scene/view/widgets/scene_list_tile.dart b/lib/features/scene/view/widgets/scene_list_tile.dart
new file mode 100644
index 0000000..79d0b59
--- /dev/null
+++ b/lib/features/scene/view/widgets/scene_list_tile.dart
@@ -0,0 +1,38 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
+import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
+import 'package:syncrow_app/utils/context_extension.dart';
+import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
+
+class SceneListTile extends StatelessWidget {
+ const SceneListTile({
+ super.key,
+ required this.assetPath,
+ required this.title,
+ this.subtitle,
+ });
+ final String assetPath;
+ final String title;
+ final String? subtitle;
+
+ @override
+ Widget build(BuildContext context) {
+ return ListTile(
+ minLeadingWidth: 40,
+ leading: SvgPicture.asset(
+ assetPath,
+ width: 20,
+ height: 32,
+ ),
+ title: BodyMedium(text: title),
+ subtitle: subtitle == null
+ ? null
+ : BodySmall(
+ text: subtitle!,
+ style: context.bodySmall.copyWith(
+ fontWeight: FontWeight.w400, color: ColorsManager.greyColor),
+ ),
+ );
+ }
+}
diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart
index 05dca3c..f1893f4 100644
--- a/lib/generated/assets.dart
+++ b/lib/generated/assets.dart
@@ -692,6 +692,7 @@ class Assets {
static const String emptyCheckboxIcon = "assets/icons/empty_checkbox_ic.svg";
static const String handClickIcon = "assets/icons/hand_click.svg";
static const String refreshIcon = "assets/icons/refresh.svg";
+ static const String addIcon = "assets/icons/add.svg";
/// Assets for assetsImagesAutomation
/// assets/images/automation.jpg
diff --git a/lib/navigation/router.dart b/lib/navigation/router.dart
index 73d2347..2cbb1b3 100644
--- a/lib/navigation/router.dart
+++ b/lib/navigation/router.dart
@@ -8,6 +8,7 @@ import 'package:syncrow_app/features/layout/view/layout_view.dart';
import 'package:syncrow_app/features/menu/view/menu_view.dart';
import 'package:syncrow_app/features/menu/view/widgets/create_home/create_home_view.dart';
import 'package:syncrow_app/features/menu/view/widgets/profile/profile_view.dart';
+import 'package:syncrow_app/features/scene/view/scene_add_tasks.dart';
import 'package:syncrow_app/features/scene/view/scene_view.dart';
import 'package:syncrow_app/features/splash/view/splash_view.dart';
import 'routing_constants.dart';
@@ -16,41 +17,55 @@ class Router {
static Route generateRoute(RouteSettings settings) {
switch (settings.name) {
case Routes.splash:
- return MaterialPageRoute(builder: (_) => const SplashView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const SplashView(), settings: settings);
// case Routes.devicesRoute:
// return MaterialPageRoute(
// builder: (_) => const DevicesView(), settings: settings);
case Routes.profileRoute:
- return MaterialPageRoute(builder: (_) => const ProfileView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const ProfileView(), settings: settings);
case Routes.sceneRoute:
- return MaterialPageRoute(builder: (_) => const SceneView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const SceneView(), settings: settings);
case Routes.layoutRoute:
- return MaterialPageRoute(builder: (_) => const LayoutPage(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const LayoutPage(), settings: settings);
case Routes.authLogin:
- return MaterialPageRoute(builder: (_) => const LoginView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const LoginView(), settings: settings);
case Routes.otpRoute:
- return MaterialPageRoute(builder: (_) => const OtpView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const OtpView(), settings: settings);
case Routes.authSignUp:
- return MaterialPageRoute(builder: (_) => const SignUpView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const SignUpView(), settings: settings);
case Routes.dashboardRoute:
- return MaterialPageRoute(builder: (_) => const DashboardView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const DashboardView(), settings: settings);
case Routes.homeRoute:
- return MaterialPageRoute(builder: (_) => const AppLayout(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const AppLayout(), settings: settings);
case Routes.menuRoute:
- return MaterialPageRoute(builder: (_) => const MenuView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const MenuView(), settings: settings);
case Routes.createUnit:
- return MaterialPageRoute(builder: (_) => const CreateUnitView(), settings: settings);
+ return MaterialPageRoute(
+ builder: (_) => const CreateUnitView(), settings: settings);
+ case Routes.sceneTasksRoute:
+ return MaterialPageRoute(
+ builder: (_) => const SceneAddTasksView(), settings: settings);
default:
return MaterialPageRoute(
builder: (_) => Scaffold(
diff --git a/lib/navigation/routing_constants.dart b/lib/navigation/routing_constants.dart
index 3c644cb..f4ec47e 100644
--- a/lib/navigation/routing_constants.dart
+++ b/lib/navigation/routing_constants.dart
@@ -17,4 +17,5 @@ class Routes {
static const String termsRoute = '/terms';
static const String otpRoute = '/otp';
static const String createUnit = '/create-unit';
+ static const String sceneTasksRoute = '/scene-tasks';
}