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

Я разрабатываю приложение Flutter для iOS, Android и Интернета. Я решил использовать пакет GetX, потому что он значительно упрощает работу, но я не понимаю, как обрабатывать навигацию по URL / адресной строке в Интернете. Например, на одном из моих экранов отображается подробная информация о событии. Навигация туда через приложение работает нормально, но что, если я вставлю ссылку на событие в браузере? Мой GetX EventController управляет _selectedEvent событием, благодаря которому я узнаю, для какого события нужно отображать детали. Однако, если я использую URL-ссылку, мое _selectedEvent событие никогда не обновляется, и на экране сведений не будет отображаться правильное событие.

В настоящее время я устанавливаю _selectedEvent на своей домашней странице, когда пользователь нажимает на событие, чтобы перейти к экрану сведений. Однако, если пользователь перемещается по адресной строке в браузере, я не могу обновить _selectedEvent. Я не думаю, что могу использовать какой-либо из менеджеров состояний в GetX, потому что я не обновляю виджеты, поэтому я не уверен, где обновить свой _selectedEvent.

Как мне управлять навигацией по адресной строке?

Надеюсь, мое объяснение имеет смысл. Я все еще пытаюсь изучить Flutter.


person Walker Sorlie    schedule 20.11.2020    source источник


Ответы (2)


Итак, я нашел какое-то решение, если кто-то еще наткнется на этот вопрос. Эта ссылка содержит хорошее и понятное описание. и реализация маршрутизации и навигации с помощью Flutter. Он не использует GetX специально для маршрутизации, но я просто использовал GetPageRoute вместо MaterialPageRoute и навигацию GetX вместо Flutter Navigator, чтобы по-прежнему пользоваться контроллерами и привязками GetX. У меня все еще есть проблемы с кнопкой возврата в браузере, но я думаю, что это проблема Flutter, а не проблема моего конкретного проекта.

person Walker Sorlie    schedule 25.11.2020

Попробуйте использовать именованные маршруты GetX с динамическими URL-ссылками, как описано здесь. Например, у вас может быть URL-адрес типа «https: //.../events? Id = 1234» для определенного события, вы можете получить идентификатор с помощью Get.parameters ['id'] в вашем контроллере и показать событие детали на основе этого идентификатора.

person Interact    schedule 26.11.2020