jumpTo<T> method
Implementation
Future<T?> jumpTo<T>(String uri, {Map<String, dynamic>? arguments}) async {
var context = navigatorKey.currentContext;
if (context == null) {
return null;
}
var mapper = _mappingRouter[uri];
if (mapper == null) {
log("[$_tag]:未发现路由映射 $uri,强制跳转");
return await Navigator.pushNamed(context, uri, arguments: arguments);
}
var interceptor = mapper.interceptor;
var local = mapper.localUri;
if (interceptor != null) {
log("[$_tag]:$uri 拦截路由");
Route? route = await interceptor.call(uri, local, arguments);
if (route != null) {
return await Navigator.push<T>(context, route as Route<T>);
}
}
var args = await mapper.argsTransformer?.call(arguments) ?? arguments;
log("[$_tag]:$uri 路由跳转->{$local,$args}");
return await Navigator.pushNamed(context, local, arguments: args);
}