我正在研究一个列表项,可以在视图开始时具有映像,并选择编辑模式时,交换机替换图像,它变成可拖动。我最初的想法是为图像使用数据类,因为出于可访问性原因,开发人员需要同时传递 Painter
对象和 contentDescription
,如下所示:
@Composable
fun ListItem(
startIcon: StartIcon? = null,
title: String
) {
Row(...) {
startIcon?.let {
Image(painter = startIcon.painter, contentDescription = startIcon.description)
}
...
}
}
在 Reddit 上阅读了关于该主题 (see here) 的中等文章的评论后,大多数评论者似乎都同意,为此目的使用数据类会因为重新组合初始化新数据类而产生性能问题, 并推荐使用 state 代替。
我将如何为这两种情况创建状态?很明显,编辑模式将是一种状态,但我不确定是否应该显示图像是否过于复杂。另外,这看起来如何?在确保视图本身无状态的同时管理此状态的最佳方法是什么?我是 Compose 的新手,考虑到它的重要性,我想确保我不会开始学习坏习惯和反模式
谢谢!