# Navigation and Routing sample code

Sample code for [Learning Flutter's New Navigation and Routing System][article],
an article explaining the Router widget and its associated classes.

## Samples

**Navigator samples**

* [navigator/anonymous_routes.dart](lib/navigator/anonymous_routes.dart) -
  Shows how to use a Navigator to push and pop anonymous routes (e.g.
  MaterialPageRoute)
* [navigator/named_routes.dart](lib/navigator/named_routes.dart) - Shows
  how to use define named routes via the `routes` parameter on MaterialApp, and
  navigate using Navigator.pushNamed
* [navigator/on_generate_route.dart](lib/navigator/on_generate_route.dart) -
  Shows how to handle arbitrary named routes using the `onGenerateRoute`
  callback defined in the `MaterialApp` constructor.

**Router samples**

* [router/pages.dart](lib/router/pages.dart) - Shows how to define a list of
  [Page] objects on Navigator declaratively.
* [router/router.dart](lib/router/router.dart) - Full sample that shows a custom
  RouteInformationParser and RouterDelegate parsing named routes and
  declaratively building the stack of pages for the Navigator.

**Advanced**

* [router_advanced/nested_router.dart](lib/router_advanced/nested_router.dart) -
  Shows two [RouterDelegate], one nested within the other. A
  [BottomNavigationBar] can be used to select the route of the outer
  RouterDelegate, and additional routes can be pushed onto the inner
  RouterDelegate / Navigator.
* [router_advanced/transition_delegate.dart](lib/router_advanced/transition_delegate.dart)
  Shows how a custom TransitionDelegate can be used to customize when
  transition animations are shown.

## Running

Each file in this project is an entrypoint. To run, specify the filename of
the sample:

```bash
flutter run lib/router/router.dart
```
[article]: https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade