Ответ
SharedFlow — это поток данных (stream) в Kotlin, который может иметь несколько подписчиков (коллекторов) и эмитит значения всем активным подписчикам. В отличие от StateFlow, он не хранит последнее значение по умолчанию и может быть настроен на буферизацию или реплей (replay) предыдущих значений.
val sharedFlow = MutableSharedFlow<Int>(replay = 2) // Буферизирует 2 последних значения
// Эмитим значения
sharedFlow.emit(1)
sharedFlow.emit(2)
// Коллектор получит 1 и 2 из-за replay
sharedFlow.collect { value -> println(value) }
Используется для событий (например, навигации, одноразовых действий), где не требуется хранение состояния. Может быть горячим (hot) — эмитит значения даже без подписчиков.