Comments 2
Я достаточно юн в разработке и не участвовал в больших коммерческих проектах, но как у Вас в этом случае работает правило единого источника правды?
Не правильнее было бы использовать потоки?
Понятие единого источника правды находится немного в другой плоскости.
Представим, что у тебя есть экран выбора контактов (не системный, а самописный) и тебе нужно, чтобы этот экран можно было открыть из разных частей приложения, чтобы получить номер телефона. В реализации экрана выбора контакта источником правды является системный провайдер контактов. В фиче, которая использует твой экран выбора контакта, может быть свой источник правды. Но в рамках перехода между экранами как будто не совсем корректно применять это понятие.
Если абстрагироваться от экранов и библиотек, то выбор контакта можно было бы реализовать так:
openContactSelector { selectedContact -> doSomething(selectedContact) }
или так:
val selectedContact = selectContact()
В таких упрощенных примерах если и можно применить правило единого источника, то как минимум оно не будет нарушаться. На этих же примерах понятно, почему не используется поток – в нем просто нет необходимости для разового получения.
Надеюсь, ответил на вопрос
Типобезопасная передача результатов между экранами в Compose с Jetpack Navigation