popToNamed method

void popToNamed(
  1. String uri, {
  2. Object? routeState,
  3. Object? data,
  4. String? popToNamed,
  5. bool beamBackOnPop = false,
  6. bool popBeamLocationOnPop = false,
  7. bool stacked = true,
  8. bool replaceRouteInformation = false,
})

Calls beamToNamed with a ReverseTransitionDelegate and tries to remove everything from history after entry corresponding to uri, as if doing a pop way back to that state, if it exists in history.

See beamToNamed for more details.

Implementation

void popToNamed(
  String uri, {
  Object? routeState,
  Object? data,
  String? popToNamed,
  bool beamBackOnPop = false,
  bool popBeamLocationOnPop = false,
  bool stacked = true,
  bool replaceRouteInformation = false,
}) {
  while (beamingHistory.isNotEmpty) {
    final index = beamingHistory.last.history.lastIndexWhere(
      (element) => element.routeInformation.uri == Uri.parse(uri),
    );
    if (index == -1) {
      _disposeBeamLocation(beamingHistory.last);
      beamingHistory.removeLast();
      continue;
    } else {
      beamingHistory.last.history
          .removeRange(index, beamingHistory.last.history.length);
      break;
    }
  }
  beamToNamed(
    uri,
    routeState: routeState,
    data: data,
    popToNamed: popToNamed,
    transitionDelegate: const ReverseTransitionDelegate(),
    beamBackOnPop: beamBackOnPop,
    popBeamLocationOnPop: popBeamLocationOnPop,
    stacked: stacked,
    replaceRouteInformation: replaceRouteInformation,
  );
}