Ahmed Fwela

predict anchorRoute when null

... ... @@ -21,7 +21,7 @@ class HomeView extends GetView<HomeController> {
return Scaffold(
body: GetRouterOutlet(
initialRoute: Routes.DASHBOARD,
anchorRoute: Routes.HOME,
// anchorRoute: Routes.HOME,
key: Get.nestedKey(Routes.HOME),
),
bottomNavigationBar: BottomNavigationBar(
... ...
... ... @@ -19,7 +19,7 @@ class RootView extends GetView<RootController> {
),
body: GetRouterOutlet(
initialRoute: Routes.HOME,
anchorRoute: '/',
// anchorRoute: '/',
filterPages: (afterAnchor) {
return afterAnchor.take(1);
},
... ...
... ... @@ -83,8 +83,18 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> {
GlobalKey<NavigatorState>? key,
}) : this.pickPages(
pickPages: (config) {
var ret = config.currentTreeBranch
.pickAfterRoute(anchorRoute ?? initialRoute);
Iterable<GetPage<dynamic>> ret;
if (anchorRoute == null) {
//anchorRoute = initialRoute minus last segment
final parsedUri = Uri.parse(initialRoute);
final replacedUri = parsedUri.replace(
pathSegments: parsedUri.pathSegments.take(
parsedUri.pathSegments.length - 1,
),
);
anchorRoute = '/$replacedUri';
}
ret = config.currentTreeBranch.pickAfterRoute(anchorRoute!);
if (filterPages != null) {
ret = filterPages(ret);
}
... ... @@ -145,10 +155,12 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> {
extension PagesListExt on List<GetPage> {
Iterable<GetPage> pickAtRoute(String route) {
return skipWhile((value) => value.name != route).toList();
return skipWhile((value) {
return value.name != route;
});
}
Iterable<GetPage> pickAfterRoute(String route) {
return skipWhile((value) => value.name != route).skip(1).toList();
return pickAtRoute(route).skip(1);
}
}
... ...