Выбор ответа Middle Навигация обновлено

Типобезопасные маршруты Navigation

Вопрос

Что дают маршруты вида @Serializable data class Article(val id: String) в Navigation Compose 2.8+?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Проверку аргументов компилятором: экран получает объект через toRoute<Article(). Раньше маршрут был строкой вида "article/{id}", и ошибка в имени аргумента или типе обнаруживалась только в рантайме.

Варианты ответа

  1. Ничего нового: это альтернативный синтаксис строковых маршрутов с теми же проверками
  2. Возможность передавать любые объекты, включая Bitmap и лямбды, без сериализации
  3. Автоматическую загрузку данных статьи по id через связанный репозиторий
  4. Проверку аргументов компилятором: экран получает объект через toRoute<Article>()правильный ответ

Разбор

Раньше маршрут был строкой вида "article/{id}", и ошибка в имени аргумента или типе обнаруживалась только в рантайме. Теперь маршрут это класс, Navigation сериализует его поля в аргументы, а получатель достаёт типизированный объект через toRoute() (во ViewModel через SavedStateHandle.toRoute()). Ограничения на размер и типы аргументов остаются, данные сами не загружаются.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме