State — длительное отображаемое (loading/data); event — одноразовое (toast, navigate), обычно SharedFlow/Channel, собирается в LaunchedEffect.
Разбор
- Повторная подписка не должна повторно навигировать.
- State восстанавливаем, event — нет (или с осторожностью).
- Не кладите navigate флаг в State без сброса.
- MVI: reduce state, effect отдельно.
Итог
Разделение state/event предотвращает повторные one-shot эффекты после recomposition.