1. content: @Composable ColumnScope.() -> Unit
ColumnScope,使得传入的参数可以使用Column的Modifier,从而在传入的composable里调整布局。
2. kotlin it和this的区别
class Model { private val _nodeList: MutableList<@Composable () -> Unit> = mutableStateListOf() val nodeList: List<@Composable () -> Unit> = _nodeList fun add(node: @Composable () -> Unit) { _nodeList.add(node) } } @Composable fun NodeList(title: String?, model: Model) { Category(title = title) { Column( modifier = Modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(2.dp) ) { for (node in model.nodeList) { node() } } } }
6. mutableStateListOf
列表内容变化时,compose组件会更新
7. rememberSaveable 和
remember
var checked by rememberSaveable { mutableStateOf(false) }
rememberSaveable
: 这个函数用于在配置更改(例如屏幕旋转)或进程死亡后保存状态。它使用一些策略来保存状态,例如将状态存储在 Bundle 中或持久化到磁盘。mutableStateOf(false)
: 这创建了一个可观察的状态对象,其初始值为false
。checked
变量会代理到这个状态对象,这意味着对checked
的读写操作实际上是对状态对象的读写操作。- 用途: 适用于需要在配置更改后仍然保留的状态,例如 checkbox 的选中状态、文本框的内容等。
val model = remember { PreferenceGroupModel() }
remember
: 这个函数用于在 Composable 函数的重组过程中记住一个对象。当 Composable 函数第一次执行时,remember
会执行 lambda 表达式并返回结果。在后续的重组中,remember
会直接返回之前记住的结果,而不会再次执行 lambda 表达式。PreferenceGroupModel()
: 这创建了一个PreferenceGroupModel
类的实例。这个类可能包含一些状态和其他逻辑。- 用途: 适用于不需要在配置更改后保留的状态,例如 ViewModel、临时计算结果等。
—— GPT