← Назад к вопросам
Реализовать Bottom Navigation с сохранением состояния
2.0 Middle🔥 221 комментариев
#State Management#Архитектура Flutter#Навигация
Условие
Создайте приложение с нижней навигацией, где каждый таб сохраняет своё состояние.
Требования
- BottomNavigationBar с 3-4 табами
- Каждый таб — отдельный Navigator (вложенная навигация)
- Сохранение состояния таба при переключении
- Возврат по Back button работает внутри таба
- Повторное нажатие на активный таб возвращает к корню
Дополнительные баллы
- Анимация переключения табов
- Бейдж с количеством уведомлений
- Скрытие навигации при скролле вниз
- Кастомный дизайн BottomNavigationBar
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Flutter Bottom Navigation с сохранением состояния
Полное решение с вложенной навигацией и сохранением состояния каждого таба.
Архитектура
- Main Navigator - корневая навигация между табами
- Nested Navigators - отдельный Navigator для каждого таба
- State Management - сохранение состояния каждого таба
- Route Management - управление историей навигации
Компоненты
- BottomNavigationBar - нижняя панель навигации
- IndexedStack - отображение активного таба без пересоздания
- WillPopScope - перехват Back button
- Badge - бейдж с уведомлениями
- Custom Navigation - кастомный дизайн
Функциональность
- Вложенная навигация - каждый таб имеет свой Navigator
- Сохранение состояния - таб не пересоздается при переключении
- Back navigation - работает внутри таба
- Double tap - повторное нажатие возвращает к корню таба
- Бейджи - отображение уведомлений
- Скрытие при скролле - автоматическое скрытие при прокрутке
- Анимация - плавный переход между табами
- Кастомный дизайн - красивый внешний вид
Файлы
- main_navigation.dart - корневой экран с навигацией
- nested_navigator.dart - вложенный navigator для таба
- bottom_navigation_item.dart - элемент навигации
- home_tab.dart - содержимое таба Home
- search_tab.dart - содержимое таба Search
- profile_tab.dart - содержимое таба Profile
- settings_tab.dart - содержимое таба Settings
Особенности реализации
- IndexedStack - ключ для сохранения состояния
- GlobalKey<NavigatorState> - доступ к Navigator каждого таба
- WillPopScope - перехват Back кнопки
- setState - обновление при смене таба
- AnimatedContainer - плавная анимация
Сохранение состояния
- ScrollPosition в списках
- Form values в формах
- Текущая страница в пейджинации
- Выбранные элементы
- История навигации таба
Бейджи
- Отображение количества уведомлений
- Красный фон с белым текстом
- Расположение в верхнем углу иконки
- Обновление при новых уведомлениях
Скрытие при скролле
- Использование ScrollNotificationListener
- Анимация opacity
- Быстрое восстановление при остановке прокрутки
Навигация внутри таба
- Кнопка back работает внутри таба
- Двойное нажатие на активный таб - к корню
- Сохранение история маршрутов для каждого таба
Это production-ready решение для навигации!