diff --git a/modules/ensemble/lib/framework/action.dart b/modules/ensemble/lib/framework/action.dart index 677eaf3d2..bafd15cc7 100644 --- a/modules/ensemble/lib/framework/action.dart +++ b/modules/ensemble/lib/framework/action.dart @@ -168,14 +168,19 @@ class NavigateViewGroupAction extends EnsembleAction { ScreenController() .navigateToScreen(context, screenName: screenName, pageArgs: payload); } else if (viewIndex != null) { + final pageGroup = context.findAncestorWidgetOfExactType(); + final menuLen = pageGroup?.menu.menuItems.length ?? 0; + final resolvedIndex = menuLen > 0 + ? safeViewGroupPayloadIndex(viewIndex, menuLen) + : viewIndex; if (payload != null) { // TODO: this is wrong. Can't mutate the scope like this scopeManager.dataContext.addDataContext(payload); } // TODO: refactor the below. Both are needed when reloadView=false, but only // viewGroupNotifier is needed without. Doesn't make any sense - PageGroupWidget.getPageController(context)?.jumpToPage(viewIndex); - viewGroupNotifier.updatePage(viewIndex, payload: payload); + PageGroupWidget.getPageController(context)?.jumpToPage(resolvedIndex); + viewGroupNotifier.updatePage(resolvedIndex, payload: payload); } return Future.value(null); }