# Welcome to go_router!

# [Docs in Japanese](https://zenn.dev/inari_sushio/scraps/01ef7604a4b934)

[The Flutter Router
API](https://api.flutter.dev/flutter/widgets/Router-class.html) as specified by
[the `MaterialApp.router`
constructor](https://api.flutter.dev/flutter/material/MaterialApp/MaterialApp.router.html)
requires an implementation of the
[`RouterDelegate`](https://api.flutter.dev/flutter/widgets/RouterDelegate-class.html)
and
[`RouteInformationParser`](https://api.flutter.dev/flutter/widgets/RouteInformationParser-class.html)
classes. These two implementations themselves imply the definition of a third
type to hold the app state that drives the creation of the
[`Navigator`](https://api.flutter.dev/flutter/widgets/Navigator-class.html). You
can read [an excellent blog post on these requirements on
Medium](https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade).
This separation of responsibilities allows the Flutter developer to implement a
number of routing and navigation policies, including deep and dynamic linking,
but at the cost of
[complexity](https://www.reddit.com/r/FlutterDev/comments/koxx4w/why_navigator_20_sucks/).

The purpose of [the go_router package](https://pub.dev/packages/go_router) is to
use declarative routes to reduce complexity, regardless of the platform you're
targeting (mobile, web, desktop), handle deep and dynamic linking from
Android, iOS and the web, along with a number of other navigation-related
scenarios, while still (hopefully) providing an easy-to-use developer
experience.

[![Flutter
Favorite](/images/flutter-favorite-logo.png)](https://docs.flutter.dev/development/packages-and-plugins/favorites)
