Router class
Router consists of multiple named Routes and provides methods for translating Routes to url/path and vice versa.
class Router { final Map<String, Route> _routes; String _host; Router(this._host, this._routes); /** * Registeres a [route] identified by [routeName] in [Router]. * It is not allowed to override already registered routes. */ void addRoute(String routeName, Route route) { if(_routes.containsKey(routeName)) { throw new ArgumentError("Route name '$routeName' already in use in Route."); } if(routeName == PARAM_ROUTE_NAME) { throw new ArgumentError("Route name cannot be '$PARAM_ROUTE_NAME' in PageNavigator."); } _routes[routeName] = route; } /** * Returns path part of the url corresponding to the given [routeName] and * [parameters]. Accepts [Map] and [Data] as [parameters]. */ String routePath(String routeName, dynamic parameters) { var route = this._routes[routeName]; if (route == null) { throw new ArgumentError('Router does not contain a route "$routeName".'); } return this._routes[routeName].path(parameters); } /** * Returns the whole url corresponding to the given [routeName] and * [parameters]. Accepts both [Map] and [Data] as [parameters]. */ String routeUrl(String routeName, dynamic parameters) { String path = this.routePath(routeName, parameters); return this._routes[routeName].isAbsolute ? path : this._host + path; } /** * Returns the List [[routeName, matchedParameters]] matching the [url]. */ List match(String url) { for (var key in this._routes.keys) { var match = this._routes[key].match(url); if (match != null) { match[PARAM_ROUTE_NAME] = key; return [key, match]; } } return null; } }
Constructors
Methods
void addRoute(String routeName, Route route) #
Registeres a route identified by routeName in Router. It is not allowed to override already registered routes.
void addRoute(String routeName, Route route) { if(_routes.containsKey(routeName)) { throw new ArgumentError("Route name '$routeName' already in use in Route."); } if(routeName == PARAM_ROUTE_NAME) { throw new ArgumentError("Route name cannot be '$PARAM_ROUTE_NAME' in PageNavigator."); } _routes[routeName] = route; }
List match(String url) #
Returns the List [[routeName, matchedParameters]] matching the url.
List match(String url) { for (var key in this._routes.keys) { var match = this._routes[key].match(url); if (match != null) { match[PARAM_ROUTE_NAME] = key; return [key, match]; } } return null; }
String routePath(String routeName, parameters) #
Returns path part of the url corresponding to the given
routeName and
parameters. Accepts Map and Data
as
parameters.
String routePath(String routeName, dynamic parameters) { var route = this._routes[routeName]; if (route == null) { throw new ArgumentError('Router does not contain a route "$routeName".'); } return this._routes[routeName].path(parameters); }
String routeUrl(String routeName, parameters) #
Returns the whole url corresponding to the given
routeName and
parameters. Accepts both Map and Data
as
parameters.
String routeUrl(String routeName, dynamic parameters) { String path = this.routePath(routeName, parameters); return this._routes[routeName].isAbsolute ? path : this._host + path; }