Getx проверяет, существует ли именованный маршрут перед маршрутизацией

#flutter #flutter-getx #flutter-routes

Вопрос:

Я использую маршрутизацию Getx с глубокими ссылками. Я хочу добавить защиту, в которой я проверяю, является ли входящий маршрут глубокой связи действительным или нет. Есть ли функция, которую я не нашел, которая делает это?

Код будет таким же простым, как:

 var str = 'my/deep/link'
if(doesNamedRouteExist(str)){
   Get.toNamed(str);
}
 

Есть идеи/рекомендации/элегантные решения?

Спасибо!

Комментарии:

1. Я не использую getX, но вы могли бы сделать что-то вроде: bool exists = false; Navigator.popUntil(context, (route) { if (route.settings.name == str) exists = true; return false;});

2. Я бы рекомендовал использовать static const id = "route name" в качестве свойства в экранах/классе. Затем используйте эту переменную const в Get.toNamed(MyApp.id)

Ответ №1:

Я бы рекомендовал использовать

 static const id = "route name" 
 

как свойство в экранах/классе.

Затем используйте эту переменную const в

 Get.toNamed(MyAppScreenA.id)
 
  • Другим способом было бы создать файл констант для имен маршрутов и сохранить эту переменную идентификатора там.

Комментарии:

1. Дело в том, что есть маршруты, которые имеют переменные идентификаторы в строке маршрута, т. е. /вещь/маршрут/1/страница также может быть /вещь/маршрут/2/страница, где число может меняться и не является статичным. Я бы подумал, что у Getx будет простой способ сопоставить существующие имена uri маршрутов. Это также не отвечает на вопрос: я ищу способ сопоставить маршруты с глубокой связью с именами маршрутов.