diff --git a/lib/widgets/drawer/app_drawer.dart b/lib/widgets/drawer/app_drawer.dart index aaa1088ab..2f52c00a5 100644 --- a/lib/widgets/drawer/app_drawer.dart +++ b/lib/widgets/drawer/app_drawer.dart @@ -208,6 +208,7 @@ class _AppDrawerState extends State { Widget get settingsTile => NavTile( icon: AIcons.settings, title: 'Settings', + topLevel: false, routeName: SettingsPage.routeName, pageBuilder: (_) => SettingsPage(), ); @@ -215,6 +216,7 @@ class _AppDrawerState extends State { Widget get aboutTile => NavTile( icon: AIcons.info, title: 'About', + topLevel: false, routeName: AboutPage.routeName, pageBuilder: (_) => AboutPage(), ); @@ -222,6 +224,7 @@ class _AppDrawerState extends State { Widget get debugTile => NavTile( icon: AIcons.debug, title: 'Debug', + topLevel: false, routeName: DebugPage.routeName, pageBuilder: (_) => DebugPage(source: source), ); diff --git a/lib/widgets/drawer/tile.dart b/lib/widgets/drawer/tile.dart index 6ac50d08b..6b044cd98 100644 --- a/lib/widgets/drawer/tile.dart +++ b/lib/widgets/drawer/tile.dart @@ -9,6 +9,7 @@ class NavTile extends StatelessWidget { final IconData icon; final String title; final Widget trailing; + final bool topLevel; final String routeName; final WidgetBuilder pageBuilder; @@ -16,6 +17,7 @@ class NavTile extends StatelessWidget { @required this.icon, @required this.title, this.trailing, + this.topLevel = true, @required this.routeName, @required this.pageBuilder, }); @@ -42,14 +44,19 @@ class NavTile extends StatelessWidget { onTap: () { Navigator.pop(context); if (routeName != context.currentRouteName) { - Navigator.pushAndRemoveUntil( - context, - MaterialPageRoute( - settings: RouteSettings(name: routeName), - builder: pageBuilder, - ), - settings.navRemoveRoutePredicate(routeName), + final route = MaterialPageRoute( + settings: RouteSettings(name: routeName), + builder: pageBuilder, ); + if (topLevel) { + Navigator.pushAndRemoveUntil( + context, + route, + settings.navRemoveRoutePredicate(routeName), + ); + } else { + Navigator.push(context, route); + } } }, selected: context.currentRouteName == routeName,