navigate<T> method
Function used to navigate pages.
name is the route name that was registered using addRoute.
args are optional arguments that can be passed to the next page.
To retrieve these arguments use args method on NyRouterRoute.
navigationType can be specified to choose from various navigation
strategies such as NavigationType.push, NavigationType.pushReplace,
NavigationType.pushAndRemoveUntil.
removeUntilPredicate should be provided if using
NavigationType.pushAndRemoveUntil strategy.
Implementation
Future<T> navigate<T>(
String name, {
NyArgument? args,
NavigationType navigationType = NavigationType.push,
dynamic result,
bool Function(Route<dynamic> route)? removeUntilPredicate,
TransitionType? transitionType,
PageTransitionType? pageTransitionType,
PageTransitionSettings? pageTransitionSettings,
}) async {
assert(navigationType != NavigationType.pushAndRemoveUntil ||
removeUntilPredicate != null);
if (transitionType != null) {
pageTransitionType = transitionType.pageTransitionType;
pageTransitionSettings = transitionType.pageTransitionSettings;
}
Uri? uriSettingName;
try {
uriSettingName = Uri.parse(name);
} on FormatException catch (e) {
NyLogger.error(e.toString());
}
String routeName = name;
if (uriSettingName != null) {
routeName = uriSettingName.path;
}
NyQueryParameters? nyQueryParameters;
if (uriSettingName != null && uriSettingName.queryParameters.isNotEmpty) {
nyQueryParameters = NyQueryParameters(uriSettingName.queryParameters);
}
bool checkRouteNamedArg = isRouteNamedArg(routeName);
if (!checkRouteNamedArg) {
_checkAndThrowRouteNotFound(routeName, args, navigationType);
}
return await _navigate(routeName, args, navigationType, result,
removeUntilPredicate, pageTransitionType, pageTransitionSettings,
queryParameters: nyQueryParameters, originalRouteName: name)
.then((value) => value as T);
}