changeMainNavigation method
Changes the main navigation to the newMainNavigation
, if applicable.
If logUndo
is false, the navigation will not be logged in the undo strategy.
returns true if the navigation was successful. False otherwise
Implementation
NavigationResult changeMainNavigation(T newMainNavigation,
{bool logUndo = true, bool shouldUpdateBloc = true}) {
if (!strategy.attemptNavigation(newMainNavigation)) {
assert(strategy.attemptNavigation(strategy.navigationOnError));
navigateToError(shouldUpdateBloc: true);
return NavigationResult.failed;
}
logSuccessfulNavigation();
if (currentMainNavigation == newMainNavigation) {
return NavigationResult.same;
}
if (logUndo) {
undoStrategy.logNavigation(currentMainNavigation, newMainNavigation);
}
currentMainNavigation = newMainNavigation;
if (shouldUpdateBloc) {
updateBloc();
}
return NavigationResult.success;
}