changeChildAtLevel method

DeepNavigationNode<T> changeChildAtLevel(
  1. int changeLevel,
  2. DeepNavigationNode<T> newChild
)

Implementation

DeepNavigationNode<T> changeChildAtLevel(
    int changeLevel, DeepNavigationNode<T> newChild) {
  if (changeLevel <= level) {
    throw ArgumentError(
        'Cannot change child at a level less than mine: $changeLevel My Level: $level)!');
  }

  if (changeLevel - 1 == level) {
    return setChild(newChild);
  }

  if (child == null) {
    throw ArgumentError(
        'No child at ${level + 1} so cannot change at $changeLevel');
  }

  return createCopy(
      newChild: child!.changeChildAtLevel(changeLevel, newChild));
}