pushView method

Future<void> pushView(
  1. BeagleRoute route,
  2. BuildContext context
)

Implementation

Future<void> pushView(BeagleRoute route, BuildContext context) async {
  final routeId = _getRouteId(route);
  final beagleViewWidget = beagle.createView(rootNavigator);
  bool completed = false;

  void complete() {
    if (completed) return;
    final Route<dynamic> materialRoute = _buildRoute(beagleViewWidget.widget, routeId);
    _thisNavigatorKey.currentState!.push(materialRoute);

    _addHistory(routeId, beagleViewWidget.view);

    completed = true;
  }

  if (route is LocalView) {
    setNavigationContext(route.navigationContext, beagleViewWidget.view.getLocalContexts(), false);
    controller.onSuccess(view: beagleViewWidget.view, context: context, screen: route.screen);
    complete();
  } else {
    await _fetchContentAndUpdateView(
      route: route,
      context: context,
      view: beagleViewWidget.view,
      completeNavigation: complete,
      navigationContext: route.navigationContext,
    );
  }
}