immathan
09/03/2020, 6:07 AMCard , the backgroundColor property is getting changed based on the condition, but not the border.
fun CardDisplay() {
val selected = remember { mutableStateOf(true) }
Surface(modifier = Modifier.fillMaxSize().gravity(Alignment.CenterVertically)) {
Card(
modifier = Modifier
.size(32.dp).clickable(onClick = {
selected.value = !selected.value
}),
backgroundColor = if (selected.value) Color.Red else Color.Black,
border = if (selected.value) BorderStroke(2.dp, Color.Green) else null,
) {
}
}
}
If you notice the cardbug.mp4 video, the border property is not reflected since the green color border is not going off.
But I tried changing the border width to 0.dp and it’s working as expected. Is this the expected behaviour?
border = if (selected.value) BorderStroke(2.dp, Color.Green) else BorderStroke(0.dp, Color.Green),venomvendor
09/03/2020, 6:38 AMborder = if (selected.value) BorderStroke(2.dp, Color.Green) else nullvenomvendor
09/03/2020, 6:38 AMnullimmathan
09/03/2020, 6:40 AMCard is caching the previous border state while recomposing. Only if I give else block a instance of BorderStroker with a 0.dp then only the border is being reset.
border = if (selected.value) BorderStroke(2.dp, Color.Green) else BorderStroke(0.dp, Color.Green),