RegexRouter class

Router with regex syntax.

For each path, you can use RegExp pattern. All named groups are passed to pathArgs parameter (see RegExpMatch). Moreover, there's an option to build simple argument that matches [a-zA-Z0-9_-]+ regex. To do so, just put a group name straight after a colon (group name must also fit [a-zA-Z0-9_-]+ pattern):

Both examples are equal:

"/:id": (context, args) => Page(args["id"])
"/(?<id>[a-zA-Z0-9_-]+)" => Page(args["id"])

To start using RegexRouter, create it's instance using RegexRouter.create factory method:

final router = RegexRouter.create({
  "/": (context, _) => HomePage(),
  "/second/:id/": (context, args) => AnotherPage(id: args["id"]),
  "/withBody": (context, args) => PageWithBody(body: args.body),
});

And then attach it to your Material's app:

MaterialApp(
  // ...
  onGenerateRoute: router.generateRoute,
  initialRoute: "/",
  // ...
)

To navigate, just use a named route:

Navigator.of(context).pushNamed("/")
Navigator.of(context).pushNamed("/second/7")
Navigator.of(context).pushNamed("/withBody", arguments: {"key": "value"})

Constructors

RegexRouter.create(Map<String, RouteBuilder> routeMap)
A factory method to create RegexRouter instance with routeMap.
factory

Properties

hashCode int
The hash code for this object. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited

Methods

generateRoute(RouteSettings settings) Route
A function to be attached in MaterialApp.onGenerateRoute.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
toString() String
Returns a string representation of this object.
inherited

Operators

operator ==(dynamic other) bool
The equality operator. [...]
inherited