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 ! 🙂