drawer: fixed navigation stack when opening setttings/about/debug
This commit is contained in:
parent
994acc81f8
commit
385a8ee430
2 changed files with 17 additions and 7 deletions
|
@ -208,6 +208,7 @@ class _AppDrawerState extends State<AppDrawer> {
|
|||
Widget get settingsTile => NavTile(
|
||||
icon: AIcons.settings,
|
||||
title: 'Settings',
|
||||
topLevel: false,
|
||||
routeName: SettingsPage.routeName,
|
||||
pageBuilder: (_) => SettingsPage(),
|
||||
);
|
||||
|
@ -215,6 +216,7 @@ class _AppDrawerState extends State<AppDrawer> {
|
|||
Widget get aboutTile => NavTile(
|
||||
icon: AIcons.info,
|
||||
title: 'About',
|
||||
topLevel: false,
|
||||
routeName: AboutPage.routeName,
|
||||
pageBuilder: (_) => AboutPage(),
|
||||
);
|
||||
|
@ -222,6 +224,7 @@ class _AppDrawerState extends State<AppDrawer> {
|
|||
Widget get debugTile => NavTile(
|
||||
icon: AIcons.debug,
|
||||
title: 'Debug',
|
||||
topLevel: false,
|
||||
routeName: DebugPage.routeName,
|
||||
pageBuilder: (_) => DebugPage(source: source),
|
||||
);
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue