logo

Navigator

flutter

widgets

`Navigator` управляет переходами между экранами в Flutter. Он реализует **стековую модель**: новый экран добавляется сверху (`push`), и возвращение происходит при удалении верхнего (`pop`).

Каждый экран в Flutter — это `Widget`. Navigator позволяет организовать переход между ними так, как будто вы листаете страницы книги.

Базовая навигация: push и pop

💡 Примечание:

`push()` и `pop()` работают как стек. Можно представить это как стопку карт: `push()` кладет карту сверху, `pop()` снимает верхнюю карту.

Передача данных между экранами

Методы навигации

push (Future<T?>)

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

pop (void)

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

pushReplacement (Future<T?>)

Заменяет текущий экран новым, не добавляя его в стек.

⚠️ Важно:

Если вы используете `pushReplacement`, пользователь не сможет вернуться назад — старый экран будет полностью удалён.

Навигация по именованным маршрутам (Named Routes)

Расширенные методы

pushNamed (Future<T?>)

Переход на экран по имени маршрута.

pushReplacementNamed (Future<T?>)

Заменяет текущий маршрут именованным.

pushNamedAndRemoveUntil (Future<T?>)

Очищает стек до определенного условия и переходит на новый маршрут.

popUntil (void)

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

canPop (bool)

Возвращает true, если можно вызвать `pop()`.

maybePop (Future<bool>)

Попробует сделать `pop()` если возможно. Не вызывает ошибку, если стек пуст.

💡 Примечание:

Named routes хорошо использовать в больших приложениях — они позволяют централизованно управлять навигацией.

Сравнение push vs pushNamed

АспектpushpushNamed
ГибкостьПозволяет передавать сложные объекты напрямуюУдобно для маршрутов по строкам
НастройкаНе требует глобальной конфигурацииНужно определить routes в MaterialApp
Тип возвратаFuture<T?>Future<T?>