Compose passes data through the composition tree explicitly through means of parameters to composable functions.
compositionLocalProvider
fun compositionLocalProvider() {
@Composable
fun App(user: User) {
CompositionLocalProvider(ActiveUser provides user) { SomeScreen() }
}
}
consumeCompositionLocal
fun consumeCompositionLocal() {
@Composable
fun UserPhoto() {
val user = ActiveUser.current
ProfileIcon(src = user.profilePhotoUrl)
}
}
createCompositionLocal
fun createCompositionLocal() {
val ActiveUser = compositionLocalOf<User> { error("No active user found!") }
}
someScreenSample
fun someScreenSample() {
@Composable
fun SomeScreen() {
UserPhoto()
}
}