🐛 Fix bottom navigation everywhere
This commit is contained in:
		| @@ -53,7 +53,6 @@ abstract class AppRouter { | ||||
|                 path: '/posts/view/:alias', | ||||
|                 name: 'postDetail', | ||||
|                 builder: (context, state) => TitleShell( | ||||
|                   showAppBar: SolianTheme.isExtraLargeScreen(context), | ||||
|                   state: state, | ||||
|                   child: PostDetailScreen( | ||||
|                     alias: state.pathParameters['alias']!, | ||||
| @@ -119,7 +118,6 @@ abstract class AppRouter { | ||||
|                 builder: (context, state) { | ||||
|                   final arguments = state.extra as ChannelDetailArguments; | ||||
|                   return TitleShell( | ||||
|                     showAppBar: SolianTheme.isExtraLargeScreen(context), | ||||
|                     state: state, | ||||
|                     child: ChannelDetailScreen( | ||||
|                       channel: arguments.channel, | ||||
| @@ -152,7 +150,6 @@ abstract class AppRouter { | ||||
|                 path: '/realms/:alias/detail', | ||||
|                 name: 'realmDetail', | ||||
|                 builder: (context, state) => TitleShell( | ||||
|                   showAppBar: SolianTheme.isExtraLargeScreen(context), | ||||
|                   state: state, | ||||
|                   child: RealmDetailScreen( | ||||
|                     realm: state.extra as Realm, | ||||
| @@ -202,7 +199,6 @@ abstract class AppRouter { | ||||
|                 path: '/account/friend', | ||||
|                 name: 'accountFriend', | ||||
|                 builder: (context, state) => TitleShell( | ||||
|                   showAppBar: SolianTheme.isExtraLargeScreen(context), | ||||
|                   state: state, | ||||
|                   child: const FriendScreen(), | ||||
|                 ), | ||||
| @@ -211,7 +207,6 @@ abstract class AppRouter { | ||||
|                 path: '/account/personalize', | ||||
|                 name: 'accountPersonalize', | ||||
|                 builder: (context, state) => TitleShell( | ||||
|                   showAppBar: SolianTheme.isExtraLargeScreen(context), | ||||
|                   state: state, | ||||
|                   child: const PersonalizeScreen(), | ||||
|                 ), | ||||
| @@ -220,7 +215,6 @@ abstract class AppRouter { | ||||
|                 path: '/about', | ||||
|                 name: 'about', | ||||
|                 builder: (context, state) => TitleShell( | ||||
|                   showAppBar: SolianTheme.isExtraLargeScreen(context), | ||||
|                   state: state, | ||||
|                   child: const AboutScreen(), | ||||
|                 ), | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import 'package:get/get.dart'; | ||||
| import 'package:go_router/go_router.dart'; | ||||
| import 'package:solian/router.dart'; | ||||
| import 'package:solian/theme.dart'; | ||||
| import 'package:solian/widgets/navigation/app_navigation.dart'; | ||||
| import 'package:solian/widgets/prev_page.dart'; | ||||
| import 'package:solian/widgets/navigation/app_navigation_bottom_bar.dart'; | ||||
| import 'package:solian/widgets/navigation/app_navigation_rail.dart'; | ||||
| @@ -11,6 +12,8 @@ import 'package:solian/widgets/sidebar/sidebar_placeholder.dart'; | ||||
| class NavShell extends StatelessWidget { | ||||
|   final bool showAppBar; | ||||
|   final bool showSidebar; | ||||
|   final bool showNavigation; | ||||
|   final bool? showBottomNavigation; | ||||
|   final GoRouterState state; | ||||
|   final Widget child; | ||||
|  | ||||
| @@ -23,6 +26,8 @@ class NavShell extends StatelessWidget { | ||||
|     required this.state, | ||||
|     this.showAppBar = true, | ||||
|     this.showSidebar = true, | ||||
|     this.showNavigation = true, | ||||
|     this.showBottomNavigation, | ||||
|     this.sidebarFirst = false, | ||||
|     this.sidebar, | ||||
|   }); | ||||
| @@ -47,6 +52,11 @@ class NavShell extends StatelessWidget { | ||||
|   Widget build(BuildContext context) { | ||||
|     final canPop = AppRouter.instance.canPop(); | ||||
|  | ||||
|     final routeName = | ||||
|         AppRouter.instance.routerDelegate.currentConfiguration.last.route.name; | ||||
|     final showBottom = showBottomNavigation ?? | ||||
|         AppNavigation.destinationPages.contains(routeName); | ||||
|  | ||||
|     return Scaffold( | ||||
|       appBar: showAppBar | ||||
|           ? AppBar( | ||||
| @@ -58,13 +68,15 @@ class NavShell extends StatelessWidget { | ||||
|               automaticallyImplyLeading: false, | ||||
|             ) | ||||
|           : null, | ||||
|       bottomNavigationBar: SolianTheme.isLargeScreen(context) | ||||
|       bottomNavigationBar: (SolianTheme.isLargeScreen(context) || | ||||
|               !(showNavigation && showBottom)) | ||||
|           ? null | ||||
|           : const AppNavigationBottomBar(), | ||||
|       body: SolianTheme.isLargeScreen(context) | ||||
|           ? Row( | ||||
|               children: [ | ||||
|                 const AppNavigationRail(), | ||||
|                 if (showNavigation) const AppNavigationRail(), | ||||
|                 if (showNavigation) | ||||
|                   const VerticalDivider(thickness: 0.3, width: 1), | ||||
|                 if (showSidebar && sidebarFirst) | ||||
|                   ...buildContent(context).reversed | ||||
|   | ||||
| @@ -24,6 +24,9 @@ abstract class AppNavigation { | ||||
|       page: 'account', | ||||
|     ), | ||||
|   ]; | ||||
|  | ||||
|   static List<String> get destinationPages => | ||||
|       AppNavigation.destinations.map((x) => x.page).toList(); | ||||
| } | ||||
|  | ||||
| class AppNavigationDestination { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user