changeMainNavigation method

NavigationResult changeMainNavigation(
  1. T newMainNavigation, {
  2. bool logUndo = true,
  3. bool shouldUpdateBloc = true,
})

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;
}