diff --git a/lib/pages/analytics/modules/analytics/views/analytics_page.dart b/lib/pages/analytics/modules/analytics/views/analytics_page.dart new file mode 100644 index 00000000..bfb200fb --- /dev/null +++ b/lib/pages/analytics/modules/analytics/views/analytics_page.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; +import 'package:syncrow_web/utils/theme/responsive_text_theme.dart'; +import 'package:syncrow_web/web_layout/web_scaffold.dart'; + +class AnalyticsPage extends StatelessWidget { + const AnalyticsPage({super.key}); + + @override + Widget build(BuildContext context) { + return WebScaffold( + appBarTitle: Text( + 'Syncrow Analytics', + style: ResponsiveTextTheme.of(context).deviceManagementTitle, + ), + scaffoldBody: const Center( + child: Text('AnalyticsPage is Working!'), + ), + ); + } +} diff --git a/lib/pages/home/bloc/home_bloc.dart b/lib/pages/home/bloc/home_bloc.dart index 584a6e17..33d55628 100644 --- a/lib/pages/home/bloc/home_bloc.dart +++ b/lib/pages/home/bloc/home_bloc.dart @@ -142,6 +142,19 @@ class HomeBloc extends Bloc { }, color: ColorsManager.primaryColor, ), + + HomeItemModel( + title: 'Syncrow Analytics', + icon: Assets.devicesIcon, + active: true, + onPress: (context) { + context.read().add(ClearCachedData()); + BlocProvider.of(context) + .add(const TriggerSwitchTabsEvent(isRoutineTab: false)); + context.go(RoutesConst.analytics); + }, + color: ColorsManager.primaryColor, + ), // HomeItemModel( // title: 'Move in', diff --git a/lib/pages/home/view/home_page_mobile.dart b/lib/pages/home/view/home_page_mobile.dart index 17735409..d0719c3e 100644 --- a/lib/pages/home/view/home_page_mobile.dart +++ b/lib/pages/home/view/home_page_mobile.dart @@ -50,8 +50,9 @@ class HomeMobilePage extends StatelessWidget { height: size.height * 0.6, width: size.width * 0.68, child: GridView.builder( - itemCount: 3, - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + itemCount: homeItems.length, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 20.0, mainAxisSpacing: 20.0, @@ -60,10 +61,11 @@ class HomeMobilePage extends StatelessWidget { itemBuilder: (context, index) { return HomeCard( index: index, - active: homeItems[index]['active'], - name: homeItems[index]['title'], - img: homeItems[index]['icon'], - onTap: () => homeBloc.homeItems[index].onPress(context), + active: homeBloc.homeItems[index].active!, + name: homeBloc.homeItems[index].title!, + img: homeBloc.homeItems[index].icon!, + onTap: () => + homeBloc.homeItems[index].onPress(context), ); }, ), @@ -94,6 +96,11 @@ class HomeMobilePage extends StatelessWidget { 'icon': Assets.devicesIcon, 'active': true, }, + { + 'title': 'Syncrow Analytics', + 'icon': Assets.iconEdit, + 'active': true, + }, // { // 'title': 'Move in', // 'icon': Assets.moveinIcon, diff --git a/lib/pages/home/view/home_page_web.dart b/lib/pages/home/view/home_page_web.dart index aad4a3be..9a59f51c 100644 --- a/lib/pages/home/view/home_page_web.dart +++ b/lib/pages/home/view/home_page_web.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:syncrow_web/pages/home/bloc/home_event.dart'; -import 'package:syncrow_web/pages/home/view/agreement_and_privacy_dialog.dart'; import 'package:syncrow_web/pages/home/bloc/home_bloc.dart'; +import 'package:syncrow_web/pages/home/bloc/home_event.dart'; import 'package:syncrow_web/pages/home/bloc/home_state.dart'; +import 'package:syncrow_web/pages/home/view/agreement_and_privacy_dialog.dart'; import 'package:syncrow_web/pages/home/view/home_card.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/web_layout/web_scaffold.dart'; @@ -24,7 +24,7 @@ class _HomeWebPageState extends State { void initState() { super.initState(); final homeBloc = BlocProvider.of(context); - homeBloc.add(FetchUserInfo()); + homeBloc.add(const FetchUserInfo()); } @override @@ -97,7 +97,7 @@ class _HomeWebPageState extends State { height: size.height * 0.6, width: size.width * 0.68, child: GridView.builder( - itemCount: 3, // Change this count if needed. + itemCount: homeBloc.homeItems.length, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, // Adjust as needed. crossAxisSpacing: 20.0, diff --git a/lib/utils/app_routes.dart b/lib/utils/app_routes.dart index ccc450fe..263bdbd6 100644 --- a/lib/utils/app_routes.dart +++ b/lib/utils/app_routes.dart @@ -1,5 +1,6 @@ import 'package:go_router/go_router.dart'; import 'package:syncrow_web/pages/access_management/view/access_management.dart'; +import 'package:syncrow_web/pages/analytics/modules/analytics/views/analytics_page.dart'; import 'package:syncrow_web/pages/auth/view/login_page.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/view/device_managment_page.dart'; import 'package:syncrow_web/pages/home/view/home_page.dart'; @@ -37,6 +38,11 @@ class AppRoutes { GoRoute( path: RoutesConst.rolesAndPermissions, builder: (context, state) => const RolesAndPermissionPage()), + GoRoute( + path: RoutesConst.analytics, + name: 'analytics', + builder: (context, state) => const AnalyticsPage(), + ), ]; } } diff --git a/lib/utils/constants/routes_const.dart b/lib/utils/constants/routes_const.dart index 8a65e9ae..83b1896f 100644 --- a/lib/utils/constants/routes_const.dart +++ b/lib/utils/constants/routes_const.dart @@ -6,4 +6,5 @@ class RoutesConst { static const String deviceManagementPage = '/device-management-page'; static const String spacesManagementPage = '/spaces_management-page'; static const String rolesAndPermissions = '/roles_and_Permissions-page'; + static const String analytics = '/syncrow_analytics'; }