我已经启动一个待办事项列表应用程序以进入jetpack compose。这是我到目前为止所得到的。
我有一个可写的待办事项:
@Composable
fun Todo(
todo: TodoItem = TodoItem()
) {
Row() {
Checkbox
Spacer
if (todo.editing)
EditTodo(todo, onEditingFinished = onEditingFinished)
else
TodoText(todo = todo)
}
}
在这里我省略了样式位以突出显示实际组件
作为参考,这里是TodoItem
:
data class TodoItem(
val id: String,
val title: String,
val done: Boolean,
val editing: Boolean,
val createdAt: Date,
)
我认为我的问题出在TodoText
方法上:
@Composable
private fun TodoText(todo: TodoItem) {
Text(
text = todo.title,
style = if (todo.done)
TextStyle(
textDecoration = TextDecoration.LineThrough,
color = Color.LightGray,
fontSize = 18.sp,
)
else
TextStyle(
textDecoration = TextDecoration.None,
color = Color.Black,
fontSize = 18.sp,
)
)
}
如果待办事项完成,我想相应地更改文本样式,正如您从以下gif所看到的,颜色正确更改,但装饰仍为LineThrough
:
也就是说,我不知道到底发生了什么。我确实将所有这些都放在LazyColumFor
里面,我可能无法正确地回收视图,在这里还存在一个具有可变状态的viewmodel ...总之,这里可能还有更多的工作要做。我已将代码添加到github。如果要检查它,请使用此branch。我计划继续通过代码更改来更新master
。
答案 0 :(得分:0)
显然,这与我使用的compose版本1.0.0-alpha04
有关。
在1.0.0-alpha06
上,此问题不再发生。