Kotlin Jetpack Compose remember 给Icon添加透明度

Kotlin更新数据要使用remember

Kotlin Compose Todo小项目 删除添加项目 ,认识状态提升_安果移不动的博客-CSDN博客

接着上面的项目

这里如果是直接使用

randomTint()

那么每次操作数据你会发现都会刷新alpha数据 这并不是我们想要的

正确做法是加上remember{}

@Composable
fun TodoRow(todo: TodoItem, modifier: Modifier = Modifier, onItemClick: (TodoItem) -> Unit) {
    Row(
        modifier = modifier
            .padding(horizontal = 16.dp, vertical = 8.dp)
            .clickable { onItemClick(todo) },
        //子元素水平均匀分发
        horizontalArrangement = Arrangement.SpaceBetween
    ) {
        Text(todo.task)
        val iconAlpha = remember() {
            randomTint()
        }
        Icon(
            imageVector = todo.icon.imageVector,
            tint = LocalContentColor.current.copy(alpha = iconAlpha),
            contentDescription = stringResource(id = todo.icon.contentDescription)
        )
    }

}

private fun randomTint(): Float {
    val number = Random.nextFloat().coerceIn(0.3f, 0.9f)
    return number

}

但是有时候会数据错乱在一起 为了区分 可以在remember添加唯一标志符

    val iconAlpha = remember(todo.id) {
            randomTint()
        }

这样 当数据发生变化 会去重绘和

iconAlpha

有关的组件。

猜你喜欢

转载自blog.csdn.net/mp624183768/article/details/125381895