Шпаргалка по Jetpack Navigation 3 от Google которую вы ждали

30 Jun, 2026
1,332
🔱 146
👥 52

Знакомая ситуация? Вы делаете очередное Android-приложение, и снова встает вопрос навигации. Базовые переходы между экранами — это просто. Но что, если нужна поддержка планшетов, условная логика (привет, экраны логина!), или, не дай бог, несколько бэкстеков, как в популярных соцсетях? Обычно это заканчивается часами гугления, изучением разрозненных статей и экспериментами. Кажется, в Google услышали наши молитвы и выкатили официальную «поваренную книгу» — репозиторий nav3-recipes.

Давайте начистоту, это не очередная библиотека, которую нужно тащить в проект. Это коллекция готовых, изолированных примеров для Jetpack Navigation 3, созданная самой командой Android. По сути, это официальная шпаргалка, которая отвечает на вопрос «Как сделать X?» самым правильным и современным способом.

Что это за «рецепты» и зачем они мне?

Представьте, что вы пришли на кухню, чтобы приготовить сложное блюдо. Вместо того чтобы читать толстенную энциклопедию о химии продуктов, вы открываете рецепт: «возьми то, смешай с этим, готовь столько-то». Репозиторий nav3-recipes работает по тому же принципу.

Каждый «рецепт» — это отдельный, минималистичный пример, решающий одну конкретную задачу. Никаких сложных абстракций, только код, который можно взять, понять и адаптировать под свой проект. Что особенно ценно — авторы обещают, что самые удачные и востребованные паттерны из этих рецептов со временем могут стать частью самой библиотеки Jetpack Navigation. Так что, изучая этот репозиторий, вы, можно сказать, заглядываете в будущее.

Давайте посмотрим, какие «блюда» нам предлагают.

Реклама

Как насчет поддержки планшетов и складных устройств?

Адаптивные интерфейсы — уже не тренд, а необходимость. В nav3-recipes этому посвящен целый раздел, и он прекрасен.

  • List-Detail Scene: Классический сценарий «список слева, детали справа». Репозиторий показывает, как реализовать такой кастомный layout с помощью Scene и SceneStrategy. Анимация переходов между состояниями выглядит очень плавно.
  • Two Pane Scene: Еще один вариант для больших экранов, позволяющий элегантно разместить два блока информации.
  • Material Adaptive Layouts: Если не хочется писать кастомную логику, можно взять готовые адаптивные компоненты из material3-adaptive-navigation. Рецепты показывают, как их правильно готовить.

Вот, например, как выглядит кастомный List-Detail layout в действии:

Пример кастомного List-Detail layout

Решение вечных проблем: множественные бэкстеки и условные переходы

Есть две задачи, на которых спотыкался, наверное, каждый второй Android-разработчик.

  1. Multiple back stacks: Помните боль с реализацией вкладок, как в Instagram, где у каждой свой независимый стек экранов? Когда вы переключаетесь между вкладками, состояние каждой из них сохраняется. В nav3-recipes есть элегантный пример, который показывает, как это сделать, да еще и с сохранением состояния после смены конфигурации или смерти процесса.
  2. Conditional navigation: «Если пользователь не залогинен — показать экран входа, иначе — главный экран». Этот, казалось бы, простой сценарий часто превращается в запутанный код. Рецепт conditional демонстрирует, как чисто и декларативно переключать целые графы навигации в зависимости от условия. Идеально для онбординга или авторизации.

Архитектура и внедрение зависимостей

Как правильно вписать навигацию в архитектуру большого приложения? Как не превратить навигационный код в монолитный клубок зависимостей? Ответы тоже есть.

Репозиторий содержит примеры по-настоящему модульного подхода, где навигационный код полностью отделен от фичей. Причем есть варианты на любой вкус:

  • Hilt: для поклонников стандартного решения от Google.
  • Koin: для тех, кто предпочитает более легковесный и прагматичный DI-фреймворк.

Кроме того, есть отдельные рецепты, посвященные передаче навигационных аргументов во ViewModel, в том числе и с использованием Hilt и Koin. Это одна из тех мелочей, которая часто вызывает вопросы у новичков.

Что еще интересного?

Конечно, это далеко не все. В «поваренной книге» вы также найдете рецепты для:

  • Кастомных анимаций: как для всего графа, так и для отдельных переходов.
  • Deep Links: как правильно парсить URL из Intent в навигационный ключ.
  • Dialogs и BottomSheets: как сделать их полноценными участниками навигации.
  • Возвращение результата: два подхода к передаче данных на предыдущий экран — через Events и через State.

Как этим пользоваться?

Проще некуда. Клонируете репозиторий, открываете в Android Studio и находите нужный пакет. Каждый рецепт находится в своей директории (например, com.example.nav3recipes.multiplestacks) и имеет собственную Activity для запуска. Ничего лишнего, только код по теме.

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

Выводы: кому и зачем это нужно?

Для джуниоров и мидлов: это просто клад. Вместо того чтобы собирать информацию по крупицам, вы получаете лучшие практики напрямую от создателей фреймворка. Это отличный способ научиться делать «правильно» с самого начала.

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

В общем, android/nav3-recipes — это тот редкий случай, когда официальный пример кода не просто показывает базовый "Hello, World!", а реально помогает в решении повседневных и нетривиальных задач. Настоятельно рекомендую добавить в закладки и заглядывать туда каждый раз, когда начинаете проектировать навигацию в новом проекте.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.