Debugging Your Routes
Because go_router asks that you provide a set of paths, sometimes as fragments to match just part of a location, it's hard to know just what routes you have in your app. In those cases, it's handy to be able to see the full paths of the routes you've created as a debugging tool, e.g.
GoRouter: known full paths for routes:
GoRouter: => /
GoRouter: => /family/:fid
GoRouter: => /family/:fid/person/:pid
GoRouter: known full paths for route names:
GoRouter: home => /
GoRouter: family => /family/:fid
GoRouter: person => /family/:fid/person/:pid
Likewise, there are multiple ways to navigate, e.g. context.go(),
context.goNamed(), context.push(), context.pushNamed(), the Link widget,
etc., as well as redirection, so it's handy to be able to see how that's going
under the covers, e.g.
GoRouter: setting initial location /
GoRouter: location changed to /
GoRouter: getting location for name: "person", params: {fid: f2, pid: p1}
GoRouter: going to /family/f2/person/p1
GoRouter: location changed to /family/f2/person/p1
Furthermore, if you use the builder instead of the pageBuilder method to
create a screen in your app, go_router will look for the app type to determine
what transitions to provide to your pages:
GoRouter: MaterialApp found
And finally, if there's an exception in your routing, you'll see that in the debug output, too, along with the call stack, e.g.
GoRouter: Exception: no routes for location: /foobarquux
...call stack elided...
To enable this kind of output when your GoRouter is first created, you can use
the debugLogDiagnostics argument:
final _router = GoRouter(
routes: ...,
// log diagnostic info for your routes
debugLogDiagnostics: true,
);
This parameter defaults to false, which produces no output.