back method

Future<void> back()

Goes back a page, tapping the back button when one is on screen.

Implementation

Future<void> back() async {
  await _clock.frame();
  final PlaybookTree tree = _tree();
  for (final Element element in tree.elements) {
    final Widget widget = element.widget;
    if (widget is! BackButton &&
        widget is! CloseButton &&
        widget is! CupertinoNavigationBarBackButton) {
      continue;
    }
    if (_centerVisible(element)) {
      await _press(
        Find.where((Widget w) => identical(w, widget)),
        hold: speed.tapHold,
      );
      return;
    }
  }
  final NavigatorState? navigator = _navigator();
  if (navigator == null || !await navigator.maybePop()) {
    throw const PlaybookFailure('There\'s no page to go back to.');
  }
  await _settle(navigated: true);
}