Estou usando um StatefulShellRoute
with StatefulShellBranch
es como no código abaixo.
Gostaria de conseguir o seguinte: quando estou dentro de uma rota, StatefulShellBranch
quero navegar para a primeira rota/rota padrão para ela StatefulShellBranch
. Por exemplo, quando navego para path5
, de dentro, Widget5
quero navegar para path4
.
Meu caso de uso é que tenho um botão Voltar dentro de Widget5
, e quando navego diretamente para path5
(por exemplo, por meio de um link profundo), quero "ir" para a primeira rota padrão dentro de StatefulShellBranch
quando o botão Voltar é pressionado.
Roteador
router = GoRouter(
routes: StatefulShellRoute.indexedStack(
parentNavigatorKey: parentNavigatorKey,
branches: [
StatefulShellBranch(
navigatorKey: key1,
routes: [
GoRoute(
path: path1,
pageBuilder: (context, state) {
return Widget1();
},
routes: <RouteBase>[
GoRoute(
path: path2,
pageBuilder: (context, state) {
return Widget2();
},
),
GoRoute(
path: path3,
pageBuilder: (context, state) {
return Widget3();
},
),
],
),
],
),
StatefulShellBranch(
navigatorKey: key2,
routes: [
GoRoute(
path: path4,
pageBuilder: (context, state) {
return Widget4();
},
),
GoRoute(
path: path5,
pageBuilder: (context, state) {
return Widget5();
},
),
],
),
],
),
GoRoute(
parentNavigatorKey: parentNavigatorKey,
path: path6,
pageBuilder: (context, state) {
return Widget6();
},
));
Widget
// Inside Widget5
class BackButton extends StatelessWidget {
...
onPressed() {
if (router.canPop()) {
router.pop();
} else {
// TODO: Navigate to default route of StatefulShellBranch
final defaultRoute = router
.routerDelegate
.currentConfiguration.???();
}
}
...
}