Как показать имя веб-маршрута Flutter в URL-адресе с помощью onGenerateRoute?

Я использую параметр onGenerateRoute в MaterialApp для маршрутизации.

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

А затем используйте pushNamed().

Я хочу отображать имена моих маршрутов в URL-адресе, но я не могу этого добиться с помощью onGenerateRoute.

Если я использую routes: в MaterialApp,

нравится:

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

Оно работает. Но я думаю, что это излишне, если я предоставил onGenerateRoute в MaterialApp.


person mirkancal    schedule 18.10.2019    source источник


Ответы (1)


Вы можете добавить name к сгенерированному маршруту, и он появится в URL:

  MaterialPageRoute(
    builder: ... ,
    settings: RouteSettings(name: 'SOMENAME'))
person Spatz    schedule 18.10.2019
comment
Когда я использую веб-конструктор (flutter run -d chrome или flutter build web), я думаю, что лучше поставить косую черту перед «ИМЯ». То есть: settings: RouteSettings(name: '/SOMENAME')) делает URL-адрес localhost: 55525 / # / SOMENAME Я не знаю, что за # есть в веб-строительстве, но я не сомневаюсь в этом. - person chongman; 13.11.2019
comment
@chongman Существует два режима маршрутизации на стороне клиента: на основе hash и на основе history api. Первый более крепкий (но менее красивый). Полагаю, что в стабильном flutter for web релизе мы сможем выбрать одну из них. - person Spatz; 13.11.2019