如何使用 Jetpack Compose 在单击时删除视图组件

How to delete a view component on click using jetpack compose

我有这样的屏幕代码(显示一个简单的列表)。

我要的是在点击项目时删除它。

我怎样才能做到这一点?

HorizontalScroller {
    Row(modifier = Spacing(bottom = 16.dp, right = 16.dp)) {
        posts.forEach { post ->
            WidthSpacer(16.dp)
            Clickable(onClick = {
               // Delete the PostCardPopular I just added if it was clicked
            }) {
               PostCardPopular(post)
            }
        }
    }
 }

您可以使用模型 Object 和 ModelList 实现此目的

@Model
object YourModel {
  val posts = ModelList<Post>()
}

.
.
.

HorizontalScroller {
    Row(modifier = Spacing(bottom = 16.dp, right = 16.dp)) {
        for(post in YourModel.posts)
            WidthSpacer(16.dp)
            Clickable(onClick = {
               YourModel.posts.remove(post)
            }) {
               PostCardPopular(post)
            }
        }
    }
 }

当您从 ModelList 中删除时,UI 将重新组合。

额外:Google 发布了一个基本撰写代码实验室。 https://codelabs.developers.google.com/codelabs/jetpack-compose-basics/