Nat Strangerweather
01/09/2021, 4:50 PMNat Strangerweather
01/09/2021, 4:50 PMval dynamicColor = remember { mutableStateOf(Color.Unspecified) }
fun getDynamicColor(): Color {
if (isEnabled)
when (callSender.value) {
0 -> dynamicColor.value = color3
1 -> dynamicColor.value = color1
2 -> dynamicColor.value = color2
3 -> dynamicColor.value = color0
} else dynamicColor.value = Color.DarkGray
return dynamicColor.value
}
Button(modifier = Modifier.padding(10.dp).height(60.dp),
elevation = ButtonDefaults.elevation(8.dp),
colors = ButtonDefaults.buttonColors(
backgroundColor = getDynamicColor()
),
Vsevolod Ganin
01/09/2021, 5:15 PMcallSender
is another mutable state, you probably want to make callSender.value
an argument of getDynamicColor
and pass it at call site. That way changes in callSender
will trigger the whole function re-evaluation and call for getDynamicColor
as a result.
The better solution would be using derivedStateOf
for dynamicColor
and put your mapping from callSender.value
to color there.Nat Strangerweather
01/09/2021, 5:16 PMderivedStateOf
! 🙂