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