Выбор ответа Middle Навигация обновлено
Типобезопасные маршруты Navigation
Вопрос
Что дают маршруты вида @Serializable data class Article(val id: String) в Navigation Compose 2.8+?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Проверку аргументов компилятором: экран получает объект через toRoute<Article(). Раньше маршрут был строкой вида "article/{id}", и ошибка в имени аргумента или типе обнаруживалась только в рантайме.
Варианты ответа
- Ничего нового: это альтернативный синтаксис строковых маршрутов с теми же проверками
- Возможность передавать любые объекты, включая Bitmap и лямбды, без сериализации
- Автоматическую загрузку данных статьи по id через связанный репозиторий
- Проверку аргументов компилятором: экран получает объект через
toRoute<Article>()правильный ответ
Разбор
Раньше маршрут был строкой вида "article/{id}", и ошибка в имени аргумента или типе обнаруживалась только в рантайме. Теперь маршрут это класс, Navigation сериализует его поля в аргументы, а получатель достаёт типизированный объект через toRoute() (во ViewModel через SavedStateHandle.toRoute()). Ограничения на размер и типы аргументов остаются, данные сами не загружаются.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.