Events — KMP
Events are one-shot messages sent from a Component to the UI layer.
Defining Events
Define events as a sealed interface extending UiEvent:
sealed interface HomeUiEvent : UiEvent {
data object ShowToast : HomeUiEvent
data class ShowError(val message: String) : HomeUiEvent
}
Sending Events
Send an event from the Component:
sendUiEvent(HomeUiEvent.ShowToast)
Collecting Events in Compose
Use EventsEffect from the decompose module:
@Composable
fun HomeScreen(component: HomeComponent) {
EventsEffect(component.events) {
onEvent<HomeUiEvent.ShowToast> { /* show toast */ }
onEvent<HomeUiEvent.ShowError> { showSnackbar(it.message) }
}
}
Note
Unlike the Android path where EventsEffect is an extension on BaseCoreViewModel, the KMP variant takes the eventsFlow parameter directly (e.g. component.events).