How to show Flutter Web route name in the URL with onGenerateRoute?

Viewed 2545

I'm using onGenerateRoute parameter on MaterialApp for routing.

MaterialApp(
  ...
  onGenerateRoute: Router.generateRoute,
  ...
)

And then use pushNamed().

I want to show my route names in the url but I can't achieve that with onGenerateRoute.

If I use routes: in MaterialApp,

like this:

  MaterialApp(
    ...
    routes: {sliverScreen: (context) => SliverScreen()},
    ...
  )

It works. But I think it's redundant if I have provided onGenerateRoute on MaterialApp.

2 Answers

You can add name to generated route, and it will appear in the URL:

  MaterialPageRoute(
    builder: ... ,
    settings: RouteSettings(name: 'SOMENAME'))

Use this on onGenerateRoute:

onGenerateRoute: (settings) => RouteGenerator.generateRoute(settings),

And while returning MaterialPageRoute from the route file just add settings:

return MaterialPageRoute(
    settings: settings,
    builder:(_) => HomeWeb()
);
Related