Nat Strangerweather
12/15/2020, 9:14 PMZach Klippenstein (he/him) [MOD]
12/15/2020, 9:17 PMNat Strangerweather
12/15/2020, 9:18 PMrobnik
12/15/2020, 9:24 PMval
, different for each of the "options".Nat Strangerweather
12/15/2020, 9:27 PMNat Strangerweather
12/15/2020, 9:28 PMZach Klippenstein (he/him) [MOD]
12/15/2020, 9:28 PMZach Klippenstein (he/him) [MOD]
12/15/2020, 9:33 PMaccentColor.value = when (index) {
0 -> if (isEnabled) Color(0xff81C784) else disabledColor
1 -> if (isEnabled) Color(0xff9575CD) else disabledColor
2 -> if (isEnabled) Color(0xffFF8A65) else disabledColor
3 -> if (isEnabled) Color(0xff5C6BC0) else disabledColor
else -> Color.Unspecified
}
That looks like code that should be in an event handler somewhere instead of in the composition directlyJeisson Sáchica
12/15/2020, 9:33 PMonClick = {
if (isSelectable == true) {
accentColor.value = when (index) {
0 -> if (isEnabled) Color(0xff81C784) else disabledColor
1 -> if (isEnabled) Color(0xff9575CD) else disabledColor
2 -> if (isEnabled) Color(0xffFF8A65) else disabledColor
3 -> if (isEnabled) Color(0xff5C6BC0) else disabledColor
else -> Color.Unspecified
}
...
}
}
Jeisson Sáchica
12/15/2020, 9:33 PMNat Strangerweather
12/15/2020, 9:34 PMJeisson Sáchica
12/15/2020, 9:36 PMJeisson Sáchica
12/15/2020, 9:43 PMNat Strangerweather
12/15/2020, 9:44 PMJeisson Sáchica
12/16/2020, 3:11 PMNat Strangerweather
12/16/2020, 3:12 PMJeisson Sáchica
12/16/2020, 3:13 PMNat Strangerweather
12/16/2020, 3:14 PMJeisson Sáchica
12/16/2020, 3:17 PM*val* accentColor = remember { mutableStateOf(Color.Unspecified) }
Jeisson Sáchica
12/16/2020, 3:17 PMColor.Unspecified
Nat Strangerweather
12/16/2020, 3:19 PMNat Strangerweather
12/16/2020, 3:20 PMrobnik
12/16/2020, 3:21 PMJeisson Sáchica
12/16/2020, 3:22 PMJeisson Sáchica
12/16/2020, 3:23 PMwhen (index) {
0 -> if (isEnabled) Color(0xff81C784) else disabledColor
1 -> if (isEnabled) Color(0xff9575CD) else disabledColor
2 -> if (isEnabled) Color(0xffFF8A65) else disabledColor
3 -> if (isEnabled) Color(0xff5C6BC0) else disabledColor
else -> Color.Unspecified
}
should be directly assigned to the backgroundColor of each buttonNat Strangerweather
12/16/2020, 3:23 PMJeisson Sáchica
12/16/2020, 3:24 PMcolors = ButtonConstants.defaultButtonColors(
backgroundColor = when (index) {
0 -> if (isEnabled) Color(0xff81C784) else disabledColor
1 -> if (isEnabled) Color(0xff9575CD) else disabledColor
2 -> if (isEnabled) Color(0xffFF8A65) else disabledColor
3 -> if (isEnabled) Color(0xff5C6BC0) else disabledColor
else -> Color.Unspecified
}
),
Nat Strangerweather
12/16/2020, 3:24 PMJeisson Sáchica
12/16/2020, 3:24 PMJeisson Sáchica
12/16/2020, 3:25 PMfun QuickOptions(context: Context, onColorChanged: (Color) -> Unit) {
...
}
Nat Strangerweather
12/16/2020, 3:27 PMJeisson Sáchica
12/16/2020, 3:28 PMButton
call the lambda with the new color:
onClick = {
if (isSelectable == true) {
val newColor = when (index) {
0 -> if (isEnabled) Color(0xff81C784) else disabledColor
1 -> if (isEnabled) Color(0xff9575CD) else disabledColor
2 -> if (isEnabled) Color(0xffFF8A65) else disabledColor
3 -> if (isEnabled) Color(0xff5C6BC0) else disabledColor
else -> Color.Unspecified
}
onColorChanged(newColor)
...
}
}
And finally you can pass the lambda on your top composable:
QuickOptions(context = context, accentColor) { newColor ->
accentColor.value = newColor
}
Nat Strangerweather
12/16/2020, 9:49 PM