pop method

void pop([
  1. SplitRouterPosition? position
])

Implementation

void pop([SplitRouterPosition? position]) {
  var lambda = (x) => position == null ? true : (x.position == position);
  var _pageInstances = <PageInstance>[]..addAll(routePath.pageInstances);

  if (position == SplitRouterPosition.Left) {
    for (var i = (_pageInstances.length - 1); i >= 0; i--) {
      if (_pageInstances[i].position == SplitRouterPosition.Right) {
        var removed = _pageInstances.removeAt(i);
        if (!removed.completer.isCompleted) removed.completer.complete();
      } else if (_pageInstances[i].position == SplitRouterPosition.Left) {
        var removed = _pageInstances.removeAt(i);
        if (!removed.completer.isCompleted) removed.completer.complete();
        break;
      }
    }
  } else if (_pageInstances.any(lambda)) {
    var removeInstance = _pageInstances.lastWhere(lambda);
    if (!removeInstance.completer.isCompleted)
      removeInstance.completer.complete();
    _pageInstances.remove(removeInstance);
  }
  routePath = SplitRoutePath(_pageInstances);

  routePath = pathTransformerCollection.transformAll(routePath);
  notifyListeners();
}