diff --git a/README.md b/README.md index 204cbc7..687653f 100644 --- a/README.md +++ b/README.md @@ -1 +1,53 @@ -# Router \ No newline at end of file +# Router + +## Getting started + + You should ensure that you add the router as a dependency in your flutter project. + Currently, you will need to add the git repo directly. A submitted pub package will + be available soon. + + To add the dependency directly: + + ```yaml +dependencies: + router: + git: git://github.com/goposse/flutter-router.git +``` +You should then run `pub update` or update your packages in IntelliJ. + +## Setting up + +First, you should define a new `Router` object by initializing it as such: +```dart +final Router router = new Router(); +``` +It may be convenient for you to store the router globally/statically so that +you can access the router in other areas in your application. + +After instantiating the router, you will need to define your routes and your route handlers: +```dart +RouteHandler usersHandler = (Map params) { + return new UsersScreen(params["id"]); +}; + +void defineRoutes(Router router) { + router.define("/users/:id", handler: usersHandler); +} +``` + +In the above example, the router will intercept a route such as +`/users/1234` and route the application to the `UsersScreen` passing +the value `1234` as a parameter to that screen. + +## Navigating + +You can use the `Router` with the `MaterialApp.onGenerateRoute` parameter + via the `Router.generator` function. To do so, pass the function reference to + the `onGenerate` parameter like: `onGenerateRoute: router.generator`. + +You can then use `Navigator.push` and the flutter routing mechanism will match the routes +for you. You can also manually push to a route yourself. To do so: + +```dart +router.navigateTo(context, "/users/1234"); +``` \ No newline at end of file