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.