Compose状态管理

1. remember

用于存储短暂数据的 Compose 状态管理器。
生命周期与组件相关联。组件被重新创建时,remember 中存储的数据会丢失。

1
2
3
4
5
6
7
8
// 声明状态组合。方式1(通常用这种方式):
var stateV by remember { mutableStateOf(1) }

// 声明状态组合。方式2:
val state = remember { mutableStateOf(1) }

// 声明状态组合。方式3:
val (stateV, setStateV) = remember { mutableStateOf(1) }

Jetpack Compose 会根据状态的变化重新绘制 UI。当状态变化时,Compose 会重新执行 composable 函数,并生成新的 UI。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column (
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
contentDescription = "dice",
contentScale = ContentScale.Crop,
painter = painterResource(imageResource)
)
Button(onClick = {
// 点击事件
result = (1..6).random()
}) {
Text("Button")
}
}