navigate<T> method

Future<T?> navigate<T>(
  1. String name, {
  2. required TransitionType transition,
  3. CruiserArgs? args,
  4. NavigationType navigationType = NavigationType.push,
  5. dynamic result,
  6. bool removeUntilPredicate(
    1. Route route
    )?,
})

Implementation

Future<T?> navigate<T>(
  String name, {
  required TransitionType transition,
  CruiserArgs? args,
  NavigationType navigationType = NavigationType.push,
  dynamic result,
  bool Function(Route<dynamic> route)? removeUntilPredicate,
}) async {
  assert(navigationType != NavigationType.pushAndRemoveUntil ||
      removeUntilPredicate != null);

  _checkAndThrowRouteNotFound(name, args, navigationType);

  final argsWrapper =
      ArgumentsWrapper(cruiserArgs: args, transition: transition);

  currentTransition = transition;

  switch (navigationType) {
    case NavigationType.push:
      {
        return await this
            .navigatorKey
            .currentState!
            .pushNamed(name, arguments: argsWrapper);
      }
    case NavigationType.pushReplace:
      {
        return await this.navigatorKey.currentState!.pushReplacementNamed(
            name,
            result: result,
            arguments: argsWrapper);
      }
    case NavigationType.pushAndRemoveUntil:
      {
        return await this
            .navigatorKey
            .currentState!
            .pushNamedAndRemoveUntil<T>(name, removeUntilPredicate!,
                arguments: argsWrapper);
      }
    case NavigationType.popAndPushNamed:
      {
        return await this
            .navigatorKey
            .currentState!
            .popAndPushNamed(name, result: result, arguments: argsWrapper);
      }
  }
}