A composable that can be dismissed by swiping left or right.
SwipeToDismissListItems
@Preview
@Composable
fun SwipeToDismissListItems() {
val dismissState = rememberSwipeToDismissBoxState()
var isVisible by remember { mutableStateOf(true) }
val scope = rememberCoroutineScope()
if (isVisible) {
SwipeToDismissBox(
state = dismissState,
backgroundContent = {
val color by
animateColorAsState(
when (dismissState.targetValue) {
SwipeToDismissBoxValue.Settled -> Color.LightGray
SwipeToDismissBoxValue.StartToEnd -> Color.Green
SwipeToDismissBoxValue.EndToStart -> Color.Red
}
)
Box(Modifier.fillMaxSize().background(color))
},
onDismiss = { direction ->
if (direction == SwipeToDismissBoxValue.EndToStart) {
isVisible = false
} else {
scope.launch { dismissState.reset() }
}
},
) {
OutlinedCard(shape = RectangleShape) {
ListItem(
headlineContent = { Text("Cupcake") },
supportingContent = { Text("Swipe me left or right!") },
)
}
}
}
}