From 73182ded9529b1a5cd6f2d79df7b28a1c0de146b Mon Sep 17 00:00:00 2001 From: Rio Jos <62337699+riojosdev@users.noreply.github.com> Date: Sun, 25 May 2025 13:52:57 +0530 Subject: [PATCH] PageBranch widget for Dashboard (#848) Removed the use of IndexedStack widget for retrieving page screens in dashboard Isolated and modified PageBranch widget to be used for both mobile and desktop dashboard --- .../common_widgets/common_widgets.dart | 1 + .../common_widgets/dashboard_page_branch.dart | 50 +++++++++++++++++++ lib/screens/dashboard.dart | 17 ++----- lib/screens/mobile/dashboard.dart | 31 +----------- 4 files changed, 57 insertions(+), 42 deletions(-) create mode 100644 lib/screens/common_widgets/dashboard_page_branch.dart diff --git a/lib/screens/common_widgets/common_widgets.dart b/lib/screens/common_widgets/common_widgets.dart index fc4c66b84..e93a624af 100644 --- a/lib/screens/common_widgets/common_widgets.dart +++ b/lib/screens/common_widgets/common_widgets.dart @@ -16,3 +16,4 @@ export 'envvar_span.dart'; export 'sidebar_filter.dart'; export 'sidebar_header.dart'; export 'sidebar_save_button.dart'; +export 'dashboard_page_branch.dart'; diff --git a/lib/screens/common_widgets/dashboard_page_branch.dart b/lib/screens/common_widgets/dashboard_page_branch.dart new file mode 100644 index 000000000..058b9014c --- /dev/null +++ b/lib/screens/common_widgets/dashboard_page_branch.dart @@ -0,0 +1,50 @@ +import 'package:apidash_design_system/apidash_design_system.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../mobile/requests_page/requests_page.dart'; +import '../envvar/environment_page.dart'; +import '../history/history_page.dart'; +import '../settings_page.dart'; +import '../mobile/widgets/page_base.dart'; +import '../home_page/home_page.dart'; + +class PageBranch extends ConsumerWidget { + const PageBranch({ + super.key, + required this.pageIndex, + }); + + final int pageIndex; + @override + Widget build(BuildContext context, WidgetRef ref) { + if (context.isMediumWindow) { + switch (pageIndex) { + case 1: + return const EnvironmentPage(); + case 2: + return const HistoryPage(); + case 3: + return const PageBase( + title: 'Settings', + scaffoldBody: SettingsPage(), + ); + default: + return const RequestResponsePage(); + } + } else { + switch (pageIndex) { + case 0: + return const HomePage(); + case 1: + return const EnvironmentPage(); + case 2: + return const HistoryPage(); + case 3: + return const SettingsPage(); + default: + return const HomePage(); + } + + } + } +} diff --git a/lib/screens/dashboard.dart b/lib/screens/dashboard.dart index 29bb79074..60ce47aef 100644 --- a/lib/screens/dashboard.dart +++ b/lib/screens/dashboard.dart @@ -6,10 +6,6 @@ import 'package:apidash/widgets/widgets.dart'; import 'package:apidash/consts.dart'; import 'package:apidash/dashbot/dashbot.dart'; import 'common_widgets/common_widgets.dart'; -import 'envvar/environment_page.dart'; -import 'home_page/home_page.dart'; -import 'history/history_page.dart'; -import 'settings_page.dart'; class Dashboard extends ConsumerWidget { const Dashboard({super.key}); @@ -112,14 +108,11 @@ class Dashboard extends ConsumerWidget { color: Theme.of(context).colorScheme.surfaceContainerHigh, ), Expanded( - child: IndexedStack( - alignment: AlignmentDirectional.topCenter, - index: railIdx, - children: const [ - HomePage(), - EnvironmentPage(), - HistoryPage(), - SettingsPage(), + child: Stack( + children: [ + PageBranch( + pageIndex: railIdx, + ), ], ), ) diff --git a/lib/screens/mobile/dashboard.dart b/lib/screens/mobile/dashboard.dart index 4e4cbd1f5..f60242043 100644 --- a/lib/screens/mobile/dashboard.dart +++ b/lib/screens/mobile/dashboard.dart @@ -4,12 +4,8 @@ import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flex_color_scheme/flex_color_scheme.dart'; import 'package:apidash/providers/providers.dart'; -import 'requests_page/requests_page.dart'; -import '../envvar/environment_page.dart'; -import '../history/history_page.dart'; -import '../settings_page.dart'; -import 'widgets/page_base.dart'; import 'navbar.dart'; +import '../common_widgets/common_widgets.dart'; class MobileDashboard extends ConsumerStatefulWidget { const MobileDashboard({super.key}); @@ -57,28 +53,3 @@ class _MobileDashboardState extends ConsumerState { ); } } - -class PageBranch extends ConsumerWidget { - const PageBranch({ - super.key, - required this.pageIndex, - }); - - final int pageIndex; - @override - Widget build(BuildContext context, WidgetRef ref) { - switch (pageIndex) { - case 1: - return const EnvironmentPage(); - case 2: - return const HistoryPage(); - case 3: - return const PageBase( - title: 'Settings', - scaffoldBody: SettingsPage(), - ); - default: - return const RequestResponsePage(); - } - } -}