pop method
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();
}