Tony Mykhaylovsky
11/17/2020, 4:27 PMTony Mykhaylovsky
11/17/2020, 4:29 PMSe7eN
11/17/2020, 4:31 PM@Composable
fun Parent() {
var state by remember { mutableStateof(false) }
Child(onSomeEvent = { state = true })
}
@Composable
fun Child(onSomeEvent: () -> Unit) {
Button(onClick = onSomeEvent)
}
Tony Mykhaylovsky
11/17/2020, 4:32 PMZach Klippenstein (he/him) [MOD]
11/17/2020, 4:33 PMJavier
11/17/2020, 4:33 PMppvi
11/17/2020, 4:33 PMZach Klippenstein (he/him) [MOD]
11/17/2020, 4:34 PMMutableState
down to your child and have the child mutate the state itself, but that increases coupling and is considered more of a bad practice.Adam Powell
11/17/2020, 4:35 PMAdam Powell
11/17/2020, 4:36 PMMutableState<MyData>
around is kind of like passing around Pair<Foo, Bar>
instead of defining a data class for the abstraction you're trying to represent with itppvi
11/17/2020, 4:36 PMAdam Powell
11/17/2020, 4:36 PMAdam Powell
11/17/2020, 4:37 PMTony Mykhaylovsky
11/17/2020, 4:41 PMTony Mykhaylovsky
11/17/2020, 4:43 PMJoost Klitsie
11/17/2020, 4:44 PMppvi
11/17/2020, 4:44 PMactions
Tony Mykhaylovsky
11/17/2020, 4:44 PMJoost Klitsie
11/17/2020, 4:45 PM@Composable
fun parent() {
childContainer(...paremeters) {
SomeOtherComposable()
}
}
@Composable
fun childContainer(...paremeters, children: @Composable () -> Unit) {
SpecialStuff()
children()
}
Tony Mykhaylovsky
11/17/2020, 4:46 PMJoost Klitsie
11/17/2020, 4:46 PMJoost Klitsie
11/17/2020, 4:46 PMJoost Klitsie
11/17/2020, 4:48 PMZach Klippenstein (he/him) [MOD]
11/17/2020, 4:48 PMclass YourComplicatedState {
private val _foo: MutableState<Foo> = mutableStateOf(…)
private val _bar: MutableState<Bar> = mutableStateOf(…)
val foo: State<Foo> = _foo
val bar: State<Bar> = _bar
fun doSomeAction() {
_foo.value = …
_bar.value = …
}
}
@Composable
fun Parent() {
var state by remember { YourComplicatedState() }
Child(state)
}
@Composable
fun Child(state: YourComplicatedState) {
Button(onClick = { state.doSomeAction() })
}
Tony Mykhaylovsky
11/17/2020, 4:48 PM