#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 маршрутов. Это также не отвечает на вопрос: я ищу способ сопоставить маршруты с глубокой связью с именами маршрутов.