【发布时间】:2021-08-25 17:55:28
【问题描述】:
好的,所以我一直在尝试在我的应用中实现 滑动删除 功能。每当我从列表中滑动其中一个项目时,我都能看到后面的 RedBackground 并且一切正常。当我删除一个项目时,滑动动画也被成功触发。 (即使我不确定为此使用延迟是否是个好主意?我想不出任何其他方式来做到这一点)。 但是当我将项目添加到数据库/列表时,进入动画不起作用,我不知道为什么。这是我的懒惰专栏的代码
@Composable
fun DisplayTasks(
tasks: List<ToDoTask>,
onSwipeToDelete: (Action, ToDoTask) -> Unit,
navigateToTaskScreen: (Int) -> Unit
) {
LazyColumn {
items(
items = tasks,
key = { task ->
task.id
}
) { task ->
val dismissState = rememberDismissState()
val dismissDirection = dismissState.dismissDirection
val isDismissed = dismissState.isDismissed(DismissDirection.EndToStart)
if (isDismissed && dismissDirection == DismissDirection.EndToStart
) {
val scope = rememberCoroutineScope()
scope.launch {
delay(300)
onSwipeToDelete(Action.DELETE, task)
}
}
AnimatedVisibility(
visible = !isDismissed,
exit = shrinkVertically(
animationSpec = tween(
durationMillis = 300,
)
),
enter = expandVertically(
animationSpec = tween(
durationMillis = 300
)
)
) {
SwipeToDismiss(
state = dismissState,
directions = setOf(DismissDirection.EndToStart),
dismissThresholds = { FractionalThreshold(0.2f) },
background = { RedBackground() },
dismissContent = {
LazyColumnItem(
toDoTask = task,
navigateToTaskScreen = navigateToTaskScreen
)
}
)
}
}
}
}
【问题讨论】:
标签: android kotlin android-jetpack-compose