Как устроена навигация

Переходы между экранами во FlutterFlow построены на маршрутизации: у каждой страницы есть свой маршрут. Понимание того, что при переходе происходит со стеком навигации, избавляет от большинства странностей вроде «кнопка назад ведёт не туда».

Маршруты

Маршрут — это адрес экрана внутри приложения. По нему приложение понимает, какую страницу показать.

СтраницаМаршрут
Главная/home
Карточка товара/product-details
Корзина/cart

Стек навигации хранит маршруты в порядке их открытия и работает по принципу «последним пришёл — первым ушёл». Поэтому кнопка «назад» возвращает именно на тот экран, с которого пришли.

Три операции описывают всё, что с ним бывает.

1. Добавление маршрута

При переходе на новый экран его маршрут кладётся на вершину стека.

Например, с главной перешли в профиль — маршрут профиля лёг сверху.

pushroute.avif

2. Снятие маршрута

При возврате верхний маршрут снимается, и снова виден предыдущий экран.

Например, с профиля нажали «назад» — маршрут профиля снят, под ним главная.

poproute.avif

3. Замена маршрута

Иногда текущий маршрут нужно заменить новым, не увеличивая стек. Классический случай — вход в приложение: после успешной авторизации возвращаться на экран входа не нужно.

replaceroute.avif

Им соответствуют три действия:

  1. Navigate To — открыть страницу
  2. Navigate Back — вернуться назад
  3. Replace Route — заменить маршрут

1. Navigate To

Открывает новый экран, добавляя маршрут в стек.

Что происходит:

  • новый экран ложится поверх текущего; предыдущий остаётся в стеке, но не виден;
  • пользователь работает с новым экраном.
инфо

Как добавить это действие — в руководстве по переходам между страницами.

2. Navigate Back

Возвращает на предыдущий экран, снимая текущий маршрут со стека.

Что происходит:

  • текущий экран убирается из стека, активным снова становится предыдущий;
  • по сути это отмена последнего перехода.
инфо

Как добавить это действие — в руководстве по переходам между страницами.

3. Replace Route

Заменяет текущий маршрут новым: стек не растёт, верхний элемент просто подменяется.

Что происходит:

  • текущий экран убирается из стека, а на его место встаёт новый.
инфо
перевод официальной документации FlutterFlow

обновлено

ESC