āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāĻžāύā§āϰ āĻ āĻŦāϏā§āĻĨāĻž āĻšāϞ āϝā§āĻā§āύ⧠āĻŽāĻžāύ āϝāĻž āϏāĻŽāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦ āĻŦāĻŋāϏā§āϤā§āϤ āϏāĻāĻā§āĻāĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āϰā§āĻŽ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠āĻāĻāĻāĻŋ āĻā§āϞāĻžāϏā§āϰ āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻĒāϰā§āϝāύā§āϤ āϏāĻŦāĻāĻŋāĻā§āĻā§ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§āĨ¤
āϏāĻŽāϏā§āϤ āĻ ā§āϝāĻžāύā§āĻĄā§āϰāϝāĻŧā§āĻĄ āĻ ā§āϝāĻžāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āϏā§āĻĨāĻŋāϤāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰā§āĨ¤ āĻ ā§āϝāĻžāύā§āĻĄā§āϰāϝāĻŧā§āĻĄ āĻ ā§āϝāĻžāĻĒā§ āϰāĻžāĻā§āϝā§āϰ āĻāϝāĻŧā§āĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ:
- āĻāĻāĻāĻŋ āϏā§āύā§āϝāĻžāĻāĻŦāĻžāϰ āϝāĻž āĻĻā§āĻāĻžāϝāĻŧ āĻāĻāύ āĻāĻāĻāĻŋ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϏāĻāϝā§āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϝāĻžāϝāĻŧ āύāĻžā§ˇ
- āĻāĻāĻāĻŋ āĻŦā§āϞāĻ āĻĒā§āϏā§āĻ āĻāĻŦāĻ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāύā§āϤāĻŦā§āϝ.
- āĻŦā§āϤāĻžāĻŽā§ āϰāĻŋāĻĒāϞ āĻ ā§āϝāĻžāύāĻŋāĻŽā§āĻļāύ āϝāĻž āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āϞāĻŋāĻ āĻāϰāϞ⧠āĻĒā§āϞ⧠āĻšāϝāĻŧāĨ¤
- āϏā§āĻāĻŋāĻāĻžāϰ āϝāĻž āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻāĻŦāĻŋāϰ āĻāĻĒāϰ⧠āĻāĻāĻāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻā§āĻāĻĒā§āϝāĻžāĻ āϰāĻāύāĻž āĻāĻĒāύāĻžāĻā§ āĻ ā§āϝāĻžāύā§āĻĄā§āϰāϝāĻŧā§āĻĄ āĻ ā§āϝāĻžāĻĒā§ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āϏāĻā§āĻāϝāĻŧ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āϏā§āĻĒāώā§āĻ āĻšāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ āĻāĻ āĻāĻžāĻāĻĄāĻāĻŋ āϏā§āĻā§āĻ āĻāĻŦāĻ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻŽāϧā§āϝ⧠āϏāĻāϝā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŦāĻ āĻā§āĻāĻĒā§āϝāĻžāĻ āĻāĻŽā§āĻĒā§āĻ āϝ⧠APIāĻā§āϞāĻŋāĻā§ āĻāϰāĻ āϏāĻšāĻā§ āϰāĻžāĻā§āϝā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦ āĻĻā§āϝāĻŧ āϤāĻžāϰ āĻāĻĒāϰ āĻĢā§āĻāĻžāϏ āĻāϰā§āĨ¤
āϰāĻžāώā§āĻā§āϰ āĻāĻŦāĻ āϰāĻāύāĻž
āϰāĻāύāĻžāĻāĻŋ āĻā§āώāĻŖāĻžāĻŽā§āϞāĻ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āĻāĻāĻŽāĻžāϤā§āϰ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ āύāϤā§āύ āĻāϰā§āĻā§āĻŽā§āύā§āĻā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻ āĻāĻŽā§āĻĒā§āĻāϝā§āĻā§āϝ āĻāϞ āĻāϰāĻžāĨ¤ āĻāĻ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻšāϞ UI āϰāĻžāĻā§āϝā§āϰ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāϤā§āĻŦāĨ¤ āϝ⧠āĻā§āύ āϏāĻŽāϝāĻŧ āĻāĻāĻāĻŋ āϰāĻžāώā§āĻā§āϰ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻāĻāĻŋ āĻĒā§āύāϰā§āĻāĻ āύ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧ. āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, TextField
āĻŽāϤ⧠āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻĒāĻĄā§āĻ āĻšāϝāĻŧ āύāĻž āϝā§āĻŽāύ āϤāĻžāϰāĻž āĻ
āĻĒāϰāĻŋāĻšāĻžāϰā§āϝ XML āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻŋāĻāϤ⧠āĻāϰā§āĨ¤ āϏā§āĻ āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞāĻā§ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āύāϤā§āύ āĻ
āĻŦāϏā§āĻĨāĻž āĻŦāϞāϤ⧠āĻšāĻŦā§āĨ¤
@Composable private fun HelloContent() { Column(modifier = Modifier.padding(16.dp)) { Text( text = "Hello!", modifier = Modifier.padding(bottom = 8.dp), style = MaterialTheme.typography.bodyMedium ) OutlinedTextField( value = "", onValueChange = { }, label = { Text("Name") } ) } }
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻŋ āĻāĻžāϞāĻžāύ āĻāĻŦāĻ āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύ, āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ āϝ⧠āĻāĻŋāĻā§āĻ āĻšāĻŦā§ āύāĻžāĨ¤ āĻāϰ āĻāĻžāϰāĻŖ TextField
āύāĻŋāĻā§āĻā§ āĻāĻĒāĻĄā§āĻ āĻāϰ⧠āύāĻž - āĻāĻāĻŋ āĻāĻĒāĻĄā§āĻ āĻšāϝāĻŧ āϝāĻāύ āĻāϰ value
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻā§ āĻāĻŽā§āĻĒā§āĻāĻŋāĻļāύ āĻāĻŦāĻ āϰāĻŋāĻāĻŽā§āĻĒā§āĻāĻŋāĻļāύ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϤāĻžāϰ āĻāĻžāϰāĻŖā§āĨ¤
āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϰāĻāύāĻž āĻāĻŦāĻ āĻĒā§āύāϰā§āĻāĻ āύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻāĻžāύāϤā§, āϰāĻāύāĻžāϝāĻŧ āĻāĻŋāύā§āϤāĻžāĻāĻžāĻŦāύāĻž āĻĻā§āĻā§āύāĨ¤
āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϰāĻžāĻā§āϝ
āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āĻĢāĻžāĻāĻļāύ āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠remember
API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ remember
āĻĻā§āĻŦāĻžāϰāĻž āĻāĻŖāύāĻž āĻāϰāĻž āĻāĻāĻāĻŋ āĻŽāĻžāύ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϰāĻāύāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻŽā§āĻĒā§āĻāĻŋāĻļāύ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āϏāĻāϰāĻā§āώāĻŋāϤ āĻŽāĻžāύāĻāĻŋ āĻĒā§āύāϰā§āĻāĻ āύā§āϰ āϏāĻŽāϝāĻŧ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ remember
āĻĒāϰāĻŋāĻŦāϰā§āϤāύāϝā§āĻā§āϝ āĻāĻŦāĻ āĻ
āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϝāĻŧ āĻāĻāϝāĻŧ āĻŦāϏā§āϤ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
mutableStateOf
āĻāĻāĻāĻŋ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖāϝā§āĻā§āϝ MutableState<T>
āϤā§āϰāĻŋ āĻāϰā§, āϝāĻž āĻāĻŽā§āĻĒā§āĻ āϰāĻžāύāĻāĻžāĻāĻŽā§āϰ āϏāĻžāĻĨā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāĻāĻāĻŋ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖāϝā§āĻā§āϝ āĻĒā§āϰāĻāĻžāϰāĨ¤
interface MutableState<T> : State<T> {
override var value: T
}
value
āĻĒāĻĄāĻŧāĻž āϝ⧠āĻā§āύ⧠āĻāĻŽā§āĻĒā§āĻāϝā§āĻā§āϝ āĻĢāĻžāĻāĻļāύ āĻāϰ value
āϏāĻŽāϝāĻŧāϏā§āĻā§ āĻĒā§āύāϰā§āĻāĻ āύ āĻā§āύ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ.
āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ⧠āĻāĻāĻāĻŋ MutableState
āĻ
āĻŦāĻā§āĻā§āĻ āĻā§āώāĻŖāĻž āĻāϰāĻžāϰ āϤāĻŋāύāĻāĻŋ āĻāĻĒāĻžāϝāĻŧ āϰāϝāĻŧā§āĻā§:
-
val mutableState = remember { mutableStateOf(default) }
-
var value by remember { mutableStateOf(default) }
-
val (value, setValue) = remember { mutableStateOf(default) }
āĻāĻ āĻā§āώāĻŖāĻžāĻā§āϞāĻŋ āϏāĻŽāϤā§āϞā§āϝ, āĻāĻŦāĻ āϰāĻžāώā§āĻā§āϰā§āϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻāĻŋāύāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ āϝ⧠āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϞāĻŋāĻāĻā§āύ āϤāĻžāϤ⧠āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻā§ āĻĒāĻĄāĻŧāĻžāϰ āĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤
by
āĻĄā§āϞāĻŋāĻā§āĻ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏā§āϰ āĻāύā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻĻāĻžāύāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ:
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
āĻā§āύ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞāĻā§āϞāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāĻŦā§ āϤāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻāĻĒāύāĻŋ āĻ
āύā§āϝāĻžāύā§āϝ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻŦāĻž āĻāĻŽāύāĻāĻŋ āĻŦāĻŋāĻŦā§āϤāĻŋāϤ⧠āϝā§āĻā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻŽāύ⧠āϰāĻžāĻāĻž āĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āύāĻžāĻŽāĻāĻŋ āĻāĻžāϞāĻŋ āĻĨāĻžāĻāϞ⧠āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ
āĻāĻŋāĻŦāĻžāĻĻāύāĻāĻŋ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āύāĻž āĻāĻžāύ āϤāĻŦā§ āĻāĻāĻāĻŋ if
āĻŦāĻŋāĻŦā§āϤāĻŋāϤ⧠āϰāĻžāώā§āĻā§āϰāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ:
@Composable fun HelloContent() { Column(modifier = Modifier.padding(16.dp)) { var name by remember { mutableStateOf("") } if (name.isNotEmpty()) { Text( text = "Hello, $name!", modifier = Modifier.padding(bottom = 8.dp), style = MaterialTheme.typography.bodyMedium ) } OutlinedTextField( value = name, onValueChange = { name = it }, label = { Text("Name") } ) } }
āϝāĻĻāĻŋāĻ remember
āĻāĻĒāύāĻžāĻā§ āĻĒā§āύāϰā§āĻāĻ āύ āĻā§āĻĄāĻŧā§ āϏā§āĻĨāĻŋāϤāĻŋ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰā§, āϤāĻŦā§ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āϰāĻžāĻā§āϝāĻāĻŋ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ rememberSaveable
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ rememberSaveable
āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϝ⧠āĻā§āύāĻ āĻŽāĻžāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āϝāĻž āĻāĻāĻāĻŋ Bundle
āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻ
āύā§āϝāĻžāύā§āϝ āĻŽāĻžāύāĻā§āϞāĻŋāϰ āĻāύā§āϝ, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āϏā§āĻāĻžāϰ āĻ
āĻŦāĻā§āĻā§āĻā§ āĻĒāĻžāϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āϰāĻžāώā§āĻā§āϰā§āϰ āĻ āύā§āϝāĻžāύā§āϝ āϏāĻŽāϰā§āĻĨāĻŋāϤ āĻĒā§āϰāĻāĻžāϰ
āϰāĻāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ āϝ⧠āĻāĻĒāύāĻŋ āϏā§āĻĨāĻŋāϤāĻŋ āϧāϰ⧠āϰāĻžāĻāϤ⧠MutableState<T>
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ; āĻāĻāĻŋ āĻ
āύā§āϝāĻžāύā§āϝ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖāϝā§āĻā§āϝ āϧāϰāύā§āϰ āϏāĻŽāϰā§āĻĨāύ āĻāϰā§āĨ¤ āĻāĻŽā§āĻĒā§āĻā§ āĻāϰā§āĻāĻāĻŋ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖāϝā§āĻā§āϝ āĻāĻžāĻāĻĒ āĻĒāĻĄāĻŧāĻžāϰ āĻāĻā§, āĻāĻĒāύāĻžāĻā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ State<T>
āĻ āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāϤ⧠āĻšāĻŦā§ āϝāĻžāϤ⧠āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞāĻā§āϞāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻŽā§āĻĒā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϝāĻāύ āϏā§āĻā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϝāĻŧāĨ¤
Android āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāĻžāύāĻā§āϞāĻŋāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖāϝā§āĻā§āϝ āĻĒā§āϰāĻāĻžāϰāĻā§āϞāĻŋ āĻĨā§āĻā§ State<T>
āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĢāĻžāĻāĻļāύ āϏāĻš āĻāĻžāĻšāĻžāĻāĻā§āϞāĻŋ āϰāĻāύāĻž āĻāϰā§āύ⧎ āĻāĻ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāĻā§, āύā§āĻā§āϰ āϰā§āĻĒāϰā§āĻāĻž āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻāĻĒāϝā§āĻā§āϤ āύāĻŋāĻĻāϰā§āĻļāύ (āĻā§āϞāĻŋ) āϝā§āĻ āĻāϰā§āύ:
Flow
:collectAsStateWithLifecycle()
collectAsStateWithLifecycle()
āĻāĻāĻāĻŋ āϞāĻžāĻāĻĢāϏāĻžāĻāĻā§āϞ-āϏāĻā§āϤāύ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻāĻāĻāĻŋFlow
āĻĨā§āĻā§ āĻŽāĻžāύ āϏāĻāĻā§āϰāĻš āĻāϰā§, āϝāĻž āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒāĻā§ āĻ ā§āϝāĻžāĻĒ āϏāĻāϏā§āĻĨāĻžāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻState
āĻĨā§āĻā§ āϏāϰā§āĻŦāĻļā§āώ āύāĻŋāϰā§āĻāϤ āĻŽāĻžāύ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āĨ¤ Android āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāĻžāύāĻā§āϞāĻŋāϤ⧠āĻĢā§āϞ⧠āϏāĻāĻā§āϰāĻš āĻāϰāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻĒāĻžāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻ APIāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ⧎build.gradle
āĻĢāĻžāĻāϞ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āύāĻŋāϰā§āĻāϰāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ (āĻāĻāĻŋ 2.6.0-beta01 āĻŦāĻž āύāϤā§āύ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ):
āĻā§āĻāϞāĻŋāύ
dependencies {
...
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7")
}
āĻā§āϰā§āĻāĻŋ
dependencies {
...
implementation "androidx.lifecycle:lifecycle-runtime-compose:2.8.7"
}
collectAsState
āĻšāϞcollectAsStateWithLifecycle
āĻāϰ āĻ āύā§āϰā§āĻĒ, āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻāĻāĻāĻŋFlow
āĻĨā§āĻā§ āĻŽāĻžāύ āϏāĻāĻā§āϰāĻš āĻāϰ⧠āĻāĻŦāĻ āĻāĻŽā§āĻĒā§āĻState
āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻāϰā§āĨ¤āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ-āĻ āĻā§āĻā§āϝāĻŧāĻŦāĻžāĻĻā§ āĻā§āĻĄā§āϰ āĻāύā§āϝ
collectAsStateWithLifecycle
āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤā§collectAsState
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϝāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ Android-āĻāϰ āĻāύā§āϝāĨ¤collectAsState
āĻāύā§āϝ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āύāĻŋāϰā§āĻāϰāϤāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ, āĻāĻžāϰāĻŖ āĻāĻāĻŋcompose-runtime
āĻāĻĒāϞāĻŦā§āϧāĨ¤observeAsState()
āĻāĻLiveData
āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻŖ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰ⧠āĻāĻŦāĻState
āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϰ āĻŽāĻžāύāĻā§āϞāĻŋāĻā§ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āĨ¤build.gradle
āĻĢāĻžāĻāϞ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āύāĻŋāϰā§āĻāϰāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ:
āĻā§āĻāϞāĻŋāύ
dependencies {
...
implementation("androidx.compose.runtime:runtime-livedata:1.9.0")
}
āĻā§āϰā§āĻāĻŋ
dependencies {
...
implementation "androidx.compose.runtime:runtime-livedata:1.9.0"
}
subscribeAsState()
āĻšāϞ āĻāĻā§āϏāĻā§āύāĻļāύ āĻĢāĻžāĻāĻļāύ āϝāĻž RxJava2 āĻāϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāĻļā§āϞ āϏā§āĻā§āϰā§āĻŽāĻā§āϞāĻŋāĻā§ (āϝā§āĻŽāύSingle
,Observable
,Completable
) āĻāĻŽā§āĻĒā§āĻState
āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻāϰā§āĨ¤build.gradle
āĻĢāĻžāĻāϞ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āύāĻŋāϰā§āĻāϰāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ:
āĻā§āĻāϞāĻŋāύ
dependencies {
...
implementation("androidx.compose.runtime:runtime-rxjava2:1.9.0")
}
āĻā§āϰā§āĻāĻŋ
dependencies {
...
implementation "androidx.compose.runtime:runtime-rxjava2:1.9.0"
}
subscribeAsState()
āĻšāϞ āĻāĻā§āϏāĻā§āύāĻļāύ āĻĢāĻžāĻāĻļāύ āϝāĻž RxJava3 āĻāϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāĻļā§āϞ āϏā§āĻā§āϰā§āĻŽāĻā§āϞāĻŋāĻā§ (āϝā§āĻŽāύSingle
,Observable
,Completable
) āĻāĻŽā§āĻĒā§āĻState
āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻāϰā§āĨ¤build.gradle
āĻĢāĻžāĻāϞ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āύāĻŋāϰā§āĻāϰāϤāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ:
āĻā§āĻāϞāĻŋāύ
dependencies {
...
implementation("androidx.compose.runtime:runtime-rxjava3:1.9.0")
}
āĻā§āϰā§āĻāĻŋ
dependencies {
...
implementation "androidx.compose.runtime:runtime-rxjava3:1.9.0"
}
āϰāĻžāώā§āĻā§āϰā§āϝāĻŧ āĻŦāύāĻžāĻŽ āϰāĻžāώā§āĻā§āϰāĻšā§āύ
āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϝāĻž āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ remember
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖ āĻ
āĻŦāϏā§āĻĨāĻž āϤā§āϰāĻŋ āĻāϰā§, āϝāĻž āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞāĻā§ āϰāĻžāώā§āĻā§āϰā§āϝāĻŧ āĻāϰ⧠āϤā§āϞā§āĨ¤ HelloContent
āĻšāϞ āĻāĻāĻāĻŋ āϏā§āĻā§āĻāĻĢā§āϞ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖāĻāĻžāĻŦā§ āĻāϰ name
āĻ
āĻŦāϏā§āĻĨāĻž āϧāĻžāϰāĻŖ āĻāϰ⧠āĻāĻŦāĻ āϏāĻāĻļā§āϧāύ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϤ⧠āĻāĻĒāϝā§āĻā§ āĻšāϤ⧠āĻĒāĻžāϰ⧠āϝā§āĻāĻžāύ⧠āĻāĻāĻāύ āĻāϞāĻžāϰāĻā§ āϰāĻžāώā§āĻā§āϰ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ āύāĻž āĻāĻŦāĻ āϰāĻžāώā§āĻā§āϰāĻā§ āύāĻŋāĻā§āϰāĻžāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āύāĻž āĻāϰā§āĻ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖ āĻ
āĻŦāϏā§āĻĨāĻž āϏāĻš āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞāĻā§āϞāĻŋ āĻāĻŽ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻāĻŦāĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻāĻ āĻŋāύāĨ¤
āĻāĻāĻāĻŋ āϏā§āĻā§āĻāϞā§āϏ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āĻšāϞ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϝāĻž āĻā§āύ⧠āϏā§āĻā§āĻ āϧāϰ⧠āύāĻžāĨ¤ āϰāĻžāώā§āĻā§āϰāĻšā§āύāϤāĻž āĻ āϰā§āĻāύā§āϰ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ āϰāĻžāώā§āĻā§āϰ āĻāϤā§āϤā§āϞāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāĨ¤
āĻāĻĒāύāĻŋ āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āĻŦāĻŋāĻāĻžāĻļ āĻāϰāĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§, āĻāĻĒāύāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻāĻāĻ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻāĻāĻāĻŋ āϏā§āĻā§āĻāĻĢā§āϞ āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏā§āĻā§āĻāϞā§āϏ āϏāĻāϏā§āĻāϰāĻŖ āĻĒā§āϰāĻāĻžāĻļ āĻāϰāϤ⧠āĻāĻžāύāĨ¤ āϏā§āĻā§āĻāĻĢā§āϞ āϏāĻāϏā§āĻāϰāĻŖāĻāĻŋ āĻāĻŽāύ āĻāϞāĻāĻžāϰā§āĻĻā§āϰ āĻāύā§āϝ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āϝā§āĻā§āϞāĻŋ āϰāĻžāώā§āĻā§āϰā§āϰ āĻŦāĻŋāώāϝāĻŧā§ āĻāĻŋāύā§āϤāĻž āĻāϰ⧠āύāĻž āĻāĻŦāĻ āϰāĻžāώā§āĻā§āϰāĻā§ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻŦāĻž āĻāϤā§āϤā§āϞāύ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŽāύ āĻāϞāĻāĻžāϰā§āĻĻā§āϰ āĻāύā§āϝ āϰāĻžāώā§āĻā§āϰāĻšā§āύ āϏāĻāϏā§āĻāϰāĻŖāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāĨ¤
āϰāĻžāĻā§āϝ āĻāϤā§āϤā§āϞāύ
āĻāĻŽā§āĻĒā§āĻā§ āϏā§āĻā§āĻ āĻšā§āϏā§āĻāĻŋāĻ āĻšāϞ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϏā§āĻā§āĻāϞā§āϏ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻāϞāĻžāϰ⧠āϏā§āĻā§āĻ āϏāϰāĻžāύā§āϰ āĻāĻāĻāĻŋ āĻĒā§āϝāĻžāĻāĻžāϰā§āύāĨ¤ āĻā§āĻāĻĒā§āϝāĻžāĻ āĻāĻŽā§āĻĒā§āĻā§ āϏā§āĻā§āĻ āĻšā§āϏā§āĻāĻŋāĻ āĻāϰ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻšāϞ āϏā§āĻā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§ āĻĻā§āĻāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž:
-
value: T
: āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŽāĻžāύ -
onValueChange: (T) -> Unit
: āĻāĻāĻāĻŋ āĻāĻā§āύā§āĻ āϝāĻž āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻ āύā§āϰā§āϧ āĻāϰā§, āϝā§āĻāĻžāύā§T
āĻšāϞ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āύāϤā§āύ āĻŽāĻžāύ
āϝāĻžāĻāĻšā§āĻ, āĻāĻĒāύāĻŋ onValueChange
āĻ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āύāύāĨ¤ āϝāĻĻāĻŋ āĻāϰāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻāύāĻžāĻā§āϞāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āϤ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻā§āϞāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤
āĻāĻāĻāĻžāĻŦā§ āĻāϤā§āϤā§āϞāĻŋāϤ āϰāĻžāĻā§āϝā§āϰ āĻāĻŋāĻā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϰāϝāĻŧā§āĻā§:
- āϏāϤā§āϝā§āϰ āĻāĻāĻ āĻāϤā§āϏ: āĻāĻāĻŋāĻā§ āύāĻāϞ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āϰāĻžāĻā§āϝāĻā§ āϏāϰāĻŋāϝāĻŧā§ āĻĻāĻŋāϝāĻŧā§, āĻāĻŽāϰāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻāĻŋ āϝ⧠āϏāϤā§āϝā§āϰ āĻāĻāĻŽāĻžāϤā§āϰ āĻāϤā§āϏ āϰāϝāĻŧā§āĻā§ā§ˇ āĻāĻāĻŋ āĻŦāĻžāĻ āĻāĻĄāĻŧāĻžāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
- āĻāύāĻā§āϝāĻžāĻĒāϏā§āϞā§āĻā§āĻĄ: āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϏā§āĻā§āĻāĻĢā§āϞ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϤāĻžāĻĻā§āϰ āĻ āĻŦāϏā§āĻĨāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻž āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖāĨ¤
- āĻāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧ: āĻāϤā§āϤā§āϞāĻŋāϤ āĻ
āĻŦāϏā§āĻĨāĻž āĻāĻāĻžāϧāĻŋāĻ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāύā§āύ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ
name
āĻĒāĻĄāĻŧāϤ⧠āĻāĻžāύ, āĻāϤā§āϤā§āϞāύ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻŋ āĻāϰāϤ⧠āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§āĨ¤ - āĻāύā§āĻāĻžāϰāϏā§āĻĒā§āĻā§āĻŦāϞ: āϏā§āĻā§āĻāϞā§āϏ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ⧠āĻāϞāĻāĻžāϰā§āϰāĻž āϏā§āĻā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻāĻā§ āĻāĻā§āύā§āĻāĻā§āϞāĻŋāĻā§ āĻāĻĒā§āĻā§āώāĻž āĻŦāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻĄāĻŋāĻāĻĒāϞāĻĄ: āϏā§āĻā§āĻāϞā§āϏ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻāύā§āϝ āϏā§āĻā§āĻ āϝ⧠āĻā§āύ⧠āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻāύ āĻāĻāĻāĻŋ
ViewModel
āĻname
āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āĻā§āώā§āϤā§āϰā§, āĻāĻĒāύāĻŋ HelloContent
āĻĨā§āĻā§ name
āĻāĻŦāĻ onValueChange
āĻŦā§āϰ āĻāϰā§āύ āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ HelloScreen
āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ⧠āύāĻŋāϝāĻŧā§ āϝāĻžāύ āϝā§āĻāĻŋāĻā§ HelloContent
āĻŦāϞā§āĨ¤
@Composable fun HelloScreen() { var name by rememberSaveable { mutableStateOf("") } HelloContent(name = name, onNameChange = { name = it }) } @Composable fun HelloContent(name: String, onNameChange: (String) -> Unit) { Column(modifier = Modifier.padding(16.dp)) { Text( text = "Hello, $name", modifier = Modifier.padding(bottom = 8.dp), style = MaterialTheme.typography.bodyMedium ) OutlinedTextField(value = name, onValueChange = onNameChange, label = { Text("Name") }) } }
HelloContent
āĻāϰ āĻŦāĻžāĻāϰ⧠āϰāĻžāĻā§āϝāĻāĻŋāĻā§ āĻāϤā§āϤā§āϞāύ āĻāϰāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§, āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āϏāĻŽā§āĻĒāϰā§āĻā§ āϝā§āĻā§āϤāĻŋ āĻāϰāĻž, āĻŦāĻŋāĻāĻŋāύā§āύ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϤ⧠āĻāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻŦāĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āϏāĻšāĻāĨ¤ HelloContent
āĻāϰ āĻ
āĻŦāϏā§āĻĨāĻž āĻāĻŋāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŋāϤ āĻšāϝāĻŧ āϤāĻž āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻĄāĻŋāĻāĻĒāϞāĻŋāĻ āĻāϰ āĻ
āϰā§āĻĨ āĻšāϞ āϝ⧠āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ HelloScreen
āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŦāĻž āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ HelloContent
āĻāĻŋāĻāĻžāĻŦā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āϤāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤

āϝ⧠āĻĒā§āϝāĻžāĻāĻžāϰā§āύ⧠āϏā§āĻā§āĻ āύāĻŋāĻā§ āϝāĻžāϝāĻŧ, āĻāĻŦāĻ āĻāĻāύāĻž āĻāĻĒāϰ⧠āϝāĻžāϝāĻŧ āϤāĻžāĻā§ āĻŦāϞāĻž āĻšāϝāĻŧ āĻāĻāĻŽā§āĻā§ āĻĄā§āĻāĻž āĻĒā§āϰāĻŦāĻžāĻš āĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰā§, āϏā§āĻā§āĻ HelloScreen
āĻĨā§āĻā§ HelloContent
āĻ āύā§āĻŽā§ āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻāĻā§āύā§āĻ HelloContent
āĻĨā§āĻā§ HelloScreen
āĻ āĻāϞ⧠āϝāĻžāϝāĻŧāĨ¤ āĻāĻāĻŽā§āĻā§ āĻĄā§āĻāĻž āĻĢā§āϞ⧠āĻ
āύā§āϏāϰāĻŖ āĻāϰā§, āĻāĻĒāύāĻŋ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞāĻā§āϞāĻŋāĻā§ āĻĄāĻŋāĻāĻĒāϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻ
āĻāĻļāĻā§āϞāĻŋ āĻĨā§āĻā§ UI-āϤ⧠āϏā§āĻĨāĻŋāϤāĻŋ āĻĻā§āĻāĻžāϝāĻŧ āϝāĻž āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āĻāĻŦāĻ āĻ
āĻŦāϏā§āĻĨāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āĨ¤
āĻāϰāĻ āĻāĻžāύāϤ⧠āϰāĻžāĻā§āϝā§āϰ āĻĒā§āώā§āĻ āĻžāĻāĻŋ āĻā§āĻĨāĻžāϝāĻŧ āĻāϤā§āϤā§āϞāύ āĻāϰāĻŦā§āύ āϤāĻž āĻĻā§āĻā§āύāĨ¤
āϰāĻāύāĻžāϝāĻŧ āϏā§āĻĨāĻŋāϤāĻŋ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāĻž āĻšāĻā§āĻā§
rememberSaveable
āĻāĻĒāĻŋāĻāĻ remember
āĻŽāϤ⧠āĻāĻāϰāĻŖ āĻāϰ⧠āĻāĻžāϰāĻŖ āĻāĻāĻŋ āϏāĻāϰāĻā§āώāĻŋāϤ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āϏā§āĻā§āĻ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āύāϰā§āĻāĻ āύ āĻā§āĻĄāĻŧā§ āĻāĻŦāĻ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒ āĻŦāĻž āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻŦāĻŋāύā§āĻĻāύ āĻā§āĻĄāĻŧā§ āĻ
āĻŦāϏā§āĻĨāĻž āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻāĻŋ āĻāĻā§, āϝāĻāύ āϏā§āĻā§āϰāĻŋāύāĻāĻŋ āĻā§āϰāĻžāύ⧠āĻšāϝāĻŧāĨ¤
āϰāĻžāώā§āĻā§āϰ āϏāĻāϰāĻā§āώāĻŖā§āϰ āĻāĻĒāĻžāϝāĻŧ
Bundle
āϝā§āĻ āĻāϰāĻž āϏāĻŽāϏā§āϤ āĻĄā§āĻāĻž āĻĒā§āϰāĻāĻžāϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻŽāύ āĻāĻŋāĻā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻāĻžāύ āϝāĻž Bundle
āϝā§āĻ āĻāϰāĻž āϝāĻžāϝāĻŧ āύāĻž, āϏā§āĻāĻžāύ⧠āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āϰāϝāĻŧā§āĻā§āĨ¤
āĻĒāĻžāϰā§āϏā§āϞāĻžāĻāĻ āĻāϰā§āύ
āϏāĻšāĻ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ āĻ
āĻŦāĻā§āĻā§āĻā§ @Parcelize
āĻā§āĻāĻž āϝā§āĻ āĻāϰāĻžāĨ¤ āĻŦāϏā§āϤā§āĻāĻŋ parcelable āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻāĻŦāĻ āĻŦāĻžāύā§āĻĄāĻŋāϞ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻ āĻā§āĻĄāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻžāϰā§āϏā§āϞāϝā§āĻā§āϝ City
āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻŋ āϰāĻžāĻā§āϝ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĨ¤
@Parcelize data class City(val name: String, val country: String) : Parcelable @Composable fun CityScreen() { var selectedCity = rememberSaveable { mutableStateOf(City("Madrid", "Spain")) } }
āĻŽā§āϝāĻžāĻĒāϏā§āĻāĻžāϰ
āϝāĻĻāĻŋ āĻā§āύ⧠āĻāĻžāϰāĻŖā§ @Parcelize
āĻāĻĒāϝā§āĻā§āϤ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻŦāϏā§āϤā§āĻā§ āĻŽāĻžāύāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āϏā§āĻā§ āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āύāĻŋāϝāĻŧāĻŽ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāϤ⧠mapSaver
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āϏāĻŋāϏā§āĻā§āĻŽ Bundle
āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
data class City(val name: String, val country: String) val CitySaver = run { val nameKey = "Name" val countryKey = "Country" mapSaver( save = { mapOf(nameKey to it.name, countryKey to it.country) }, restore = { City(it[nameKey] as String, it[countryKey] as String) } ) } @Composable fun CityScreen() { var selectedCity = rememberSaveable(stateSaver = CitySaver) { mutableStateOf(City("Madrid", "Spain")) } }
āϞāĻŋāϏā§āĻāϏā§āĻāĻžāϰ
āĻŽāĻžāύāĻāĻŋāϤā§āϰā§āϰ āĻāύā§āϝ āĻā§āĻā§āϞāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻĄāĻŧāĻžāϤā§, āĻāĻĒāύāĻŋ listSaver
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻā§ āĻšāĻŋāϏāĻžāĻŦā§ āĻāϰ āϏā§āĻāĻāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
data class City(val name: String, val country: String) val CitySaver = listSaver<City, Any>( save = { listOf(it.name, it.country) }, restore = { City(it[0] as String, it[1] as String) } ) @Composable fun CityScreen() { var selectedCity = rememberSaveable(stateSaver = CitySaver) { mutableStateOf(City("Madrid", "Spain")) } }
āĻāĻŽā§āĻĒā§āĻ āϰāĻžāώā§āĻā§āϰ āϧāĻžāϰāĻ
āϏāϰāϞ āϰāĻžāώā§āĻā§āϰ āĻāϤā§āϤā§āϞāύ āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞ āĻĢāĻžāĻāĻļāύ āύāĻŋāĻā§āĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§. āϝāĻžāĻāĻšā§āĻ, āϝāĻĻāĻŋ āϰāĻžāĻā§āϝā§āϰ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻŦā§āĻĻā§āϧāĻŋāϰ āĻā§āϰā§āϝāĻžāĻ āϰāĻžāĻāϤ⧠āĻšāϝāĻŧ, āĻŦāĻž āϏāĻāĻŽāĻŋāĻļā§āϰāĻŖāϝā§āĻā§āϝ āĻĢāĻžāĻāĻļāύ⧠āϏāĻā§āĻāĻžāϞāύā§āϰ āϝā§āĻā§āϤāĻŋ āĻĻā§āĻāĻž āĻĻā§āϝāĻŧ, āϤāĻžāĻšāϞ⧠āϝā§āĻā§āϤāĻŋ āĻāĻŦāĻ āϰāĻžāώā§āĻā§āϰā§āϝāĻŧ āĻĻāĻžāϝāĻŧāĻŋāϤā§āĻŦāĻā§āϞāĻŋ āĻ āύā§āϝāĻžāύā§āϝ āĻļā§āϰā§āĻŖā§āϤ⧠āĻ āϰā§āĻĒāĻŖ āĻāϰāĻž āĻāĻāĻāĻŋ āĻāĻžāϞ āĻ āĻā§āϝāĻžāϏ: āϰāĻžāώā§āĻā§āϰ āϧāĻžāϰāĻ āĨ¤
āĻāϰāĻ āĻāĻžāύāϤ⧠āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻāĻžāĻāĻĄā§ āĻāĻŽā§āĻĒā§āĻ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ⧠āϏā§āĻā§āĻ āĻšā§āϏā§āĻāĻŋāĻ āĻĻā§āĻā§āύ āĻŦāĻž, āĻāϰāĻ āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§, āϏā§āĻā§āĻ āĻšā§āϞā§āĻĄāĻžāϰ āĻāĻŦāĻ āĻāĻāĻāĻ āϏā§āĻā§āĻ āĻĒā§āώā§āĻ āĻž āĻĻā§āĻā§āύāĨ¤
āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϞ⧠āϰāĻŋāĻā§āϰāĻŋāĻāĻžāϰ āĻāĻŖāύāĻž āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ
remember
API āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ MutableState
āϏāĻžāĻĨā§ āĻāĻāϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ:
var name by remember { mutableStateOf("") }
āĻāĻāĻžāύā§, remember
āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠MutableState
āĻŽāĻžāύāĻā§ āĻĒā§āύāϰā§āĻāĻ āύ āĻāϰā§āĨ¤
āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§, remember
āĻāĻāĻāĻŋ calculation
āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϞāĻžāĻā§āĨ¤ āϝāĻāύ remember
āĻĒā§āϰāĻĨāĻŽ āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧ, āĻāĻāĻŋ calculation
āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāĻā§ āĻāĻšā§āĻŦāĻžāύ āĻāϰ⧠āĻāĻŦāĻ āĻāϰ āĻĢāϞāĻžāĻĢāϞ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĨ¤ āĻĒā§āύāϰā§āĻāĻ āύā§āϰ āϏāĻŽāϝāĻŧ, remember
āϝ⧠āĻŽāĻžāύāĻāĻŋ āĻļā§āώ āϏāĻāϰāĻā§āώāĻŋāϤ āĻāĻŋāϞāĨ¤
āĻā§āϝāĻžāĻļāĻŋāĻ āϏā§āĻā§āĻ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻĒāύāĻŋ āĻāĻŽā§āĻĒā§āĻāĻŋāĻļāύ⧠āϝā§āĻā§āύ āĻŦāϏā§āϤ⧠āĻŦāĻž āĻ
āĻĒāĻžāϰā§āĻļāύā§āϰ āĻĢāϞāĻžāĻĢāϞ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠remember
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻļā§āϰ⧠āĻŦāĻž āĻāĻŖāύāĻž āĻāϰāĻž āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞāĨ¤ āĻāĻĒāύāĻŋ āĻšāϝāĻŧāϤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āύāϰā§āĻāĻ āύ⧠āĻāĻ āĻāĻŖāύāĻžāϰ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰāϤ⧠āĻāĻžāύ āύāĻžāĨ¤ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻāĻ ShaderBrush
āĻ
āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰāĻā§, āϝāĻž āĻāĻāĻāĻŋ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻ
āĻĒāĻžāϰā§āĻļāύ:
val brush = remember { ShaderBrush( BitmapShader( ImageBitmap.imageResource(res, avatarRes).asAndroidBitmap(), Shader.TileMode.REPEAT, Shader.TileMode.REPEAT ) ) }
remember
āĻŽāĻžāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āϝāϤāĻā§āώāĻŖ āύāĻž āĻāĻāĻŋ āϰāĻāύāĻžāĻāĻŋ āĻā§āĻĄāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻā§āϝāĻžāĻļā§ āĻŽāĻžāύ āĻ
āĻŦā§āϧ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĒāĻžāϝāĻŧ āĻāĻā§āĨ¤ remember
API āĻāĻāĻāĻŋ key
āĻŦāĻž keys
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻ āύā§āϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻāĻ āĻā§āĻā§āϞāĻŋāϰ āϝā§āĻā§āύāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϝāĻŧ, āĻĒāϰā§āϰ āĻŦāĻžāϰ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻĒā§āύāϰā§āĻāĻ āĻŋāϤ āĻšāϞ⧠, remember
āĻā§āϝāĻžāĻļā§ āĻ
āĻāĻžāϰā§āϝāĻāϰ āĻāϰ⧠āĻāĻŦāĻ āĻāĻŖāύāĻž āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āĻŦā§āϞāĻ āĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāϝāĻŧ āĨ¤ āĻāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻŽā§āĻĒā§āĻāĻŋāĻļāύā§āϰ āĻāĻāĻāĻŋ āĻŦāϏā§āϤā§āϰ āĻā§āĻŦāύāĻāĻžāϞā§āϰ āĻāĻĒāϰ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻĻā§āϝāĻŧāĨ¤ āĻāύāĻĒā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻāĻŖāύāĻž āĻŦā§āϧ āĻĨāĻžāĻā§, āϝāϤāĻā§āώāĻŖ āύāĻž āĻŽāύ⧠āϰāĻžāĻāĻž āĻŽāĻžāύ āϰāĻāύāĻžāĻāĻŋ āĻā§āĻĄāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻĻāĻžāĻšāϰāĻŖāĻā§āϞāĻŋ āĻĻā§āĻāĻžāϝāĻŧ āϝ⧠āĻāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
āĻāĻ āϏā§āύāĻŋāĻĒā§āĻā§, āĻāĻāĻāĻŋ ShaderBrush
āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻāĻāĻŋ Box
āĻāĻŽā§āĻĒā§āĻā§āĻŦāϞā§āϰ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻĒā§āĻāύā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ remember
ShaderBrush
āĻĻā§āώā§āĻāĻžāύā§āϤ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āϤā§āϰāĻŋ āĻāϰāĻž āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ, āϝā§āĻŽāύāĻāĻŋ āĻāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ remember
avatarRes
key1
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āύā§āϝāĻŧ, āϝāĻž āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄ āĻāĻŽā§āĻāĨ¤ āϝāĻĻāĻŋ avatarRes
āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧ, āĻŦā§āϰāĻžāĻļāĻāĻŋ āύāϤā§āύ āĻāĻŋāϤā§āϰā§āϰ āϏāĻžāĻĨā§ āĻĒā§āύāϰāĻžāϝāĻŧ āϏāĻāĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ Box
āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻāϤ⧠āĻĒāĻžāϰ⧠āϝāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻĒāĻŋāĻāĻžāϰ āĻĨā§āĻā§ āĻĒāĻāĻā§āĻŽāĻŋ āĻšāϤ⧠āĻ
āύā§āϝ āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύāĨ¤
@Composable private fun BackgroundBanner( @DrawableRes avatarRes: Int, modifier: Modifier = Modifier, res: Resources = LocalContext.current.resources ) { val brush = remember(key1 = avatarRes) { ShaderBrush( BitmapShader( ImageBitmap.imageResource(res, avatarRes).asAndroidBitmap(), Shader.TileMode.REPEAT, Shader.TileMode.REPEAT ) ) } Box( modifier = modifier.background(brush) ) { /* ... */ } }
āĻĒāϰāĻŦāϰā§āϤ⧠āϏā§āύāĻŋāĻĒā§āĻā§, āϏā§āĻā§āĻāĻā§ āĻāĻāĻāĻŋ āĻĒā§āϞā§āĻāύ āϏā§āĻā§āĻ āĻšā§āϞā§āĻĄāĻžāϰ āĻā§āϞāĻžāϏ MyAppState
āĻ āĻāϤā§āϤā§āϞāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ remember
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āϞāĻžāϏā§āϰ āĻāĻāĻāĻŋ āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ āĻāϰāĻŽā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ rememberMyAppState
āĻĢāĻžāĻāĻļāύ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āĨ¤ āĻāĻŽā§āĻĒā§āĻā§ āĻāĻŋāĻā§ āĻĨāĻžāĻāĻž āĻāĻāĻāĻŋ āĻĻā§āώā§āĻāĻžāύā§āϤ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻ āϧāϰāύā§āϰ āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋāĻā§ āĻĒā§āϰāĻāĻžāĻļ āĻāϰāĻž āĻāĻŽā§āĻĒā§āĻā§āϰ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϝāĻžāĻāĻžāϰā§āύāĨ¤ rememberMyAppState
āĻĢāĻžāĻāĻļāύ windowSizeClass
āĻĒāĻžāϝāĻŧ, āϝāĻž remember
key
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻāĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧ, āĻ
ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ āĻŽāĻžāύ āϏāĻš āĻĒā§āϞā§āĻāύ āϏā§āĻā§āĻ āĻšā§āϞā§āĻĄāĻžāϰ āĻā§āϞāĻžāϏ āĻĒā§āύāϰāĻžāϝāĻŧ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻāϤ⧠āĻĒāĻžāϰ⧠āϝāĻĻāĻŋ, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĄāĻŋāĻāĻžāĻāϏāĻāĻŋ āĻā§āϰāĻžāύāĨ¤
@Composable private fun rememberMyAppState( windowSizeClass: WindowSizeClass ): MyAppState { return remember(windowSizeClass) { MyAppState(windowSizeClass) } } @Stable class MyAppState( private val windowSizeClass: WindowSizeClass ) { /* ... */ }
āĻāĻāĻāĻŋ āĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύāĻž āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻāĻŦāĻ āϏāĻā§āĻāĻŋāϤ āĻŽāĻžāύāĻāĻŋāĻā§ āĻ āĻŦā§āϧ āĻāϰ⧠āĻāĻŋāύāĻž āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻāĻŽā§āĻĒā§āĻ āĻā§āϞāĻžāϏā§āϰ āϏāĻŽāĻžāύ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
āĻĒā§āύāĻāĻāĻ āύā§āϰ āĻŦāĻžāĻāϰ⧠āĻā§ āϏāĻš āϏā§āĻā§āĻ āϏā§āĻā§āϰ āĻāϰā§āύ
rememberSaveable
āĻāĻĒāĻŋāĻāĻ āĻšāϞ remember
āĻāĻžāϰāĻĒāĻžāĻļā§ āĻāĻāĻāĻŋ āĻŽā§āĻĄāĻŧāĻ āϝāĻž āĻāĻāĻāĻŋ Bundle
āĻĄā§āĻāĻž āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āĻāĻĒāĻŋāĻāĻ āϰāĻžāώā§āĻā§āϰāĻā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒā§āύāϰā§āĻāĻ āύāĻ āύāϝāĻŧ, āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒ āĻŦāĻŋāύā§āĻĻāύ āĻāĻŦāĻ āϏāĻŋāϏā§āĻā§āĻŽ-āĻĒā§āϰāĻŦāϰā§āϤāĻŋāϤ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻŽā§āϤā§āϝā§āϤā§āĻ āĻŦā§āĻāĻā§ āĻĨāĻžāĻāϤ⧠āĻĻā§āϝāĻŧāĨ¤ rememberSaveable
āĻāĻāĻ āĻāĻĻā§āĻĻā§āĻļā§āϝ⧠input
āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻā§āϰāĻšāĻŖ āĻāϰ⧠āϝāĻž remember
keys
āĻā§āϰāĻšāĻŖ āĻāϰā§āĨ¤ āĻā§āύ⧠āĻāύāĻĒā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϞ⧠āĻā§āϝāĻžāĻļā§ āĻ
āĻŦā§āϧ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ āĨ¤ āĻĒāϰā§āϰ āĻŦāĻžāϰ āϝāĻāύ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻŽā§āĻĒā§āĻ āĻāϰāĻž āĻšāϝāĻŧ, rememberSaveable
āĻāĻŖāύāĻž āϞā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āĻŦā§āϞāĻāĻāĻŋāĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϰā§āϝāĻāϰ āĻāϰā§āĨ¤
āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻĻāĻžāĻšāϰāĻŖā§, typedQuery
āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ rememberSaveable
userTypedQuery
āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§:
var userTypedQuery by rememberSaveable(typedQuery, stateSaver = TextFieldValue.Saver) { mutableStateOf( TextFieldValue(text = typedQuery, selection = TextRange(typedQuery.length)) ) }
āĻāϰāĻ āĻāĻžāύā§āύ
āϰāĻžāĻā§āϝ āĻāĻŦāĻ āĻā§āĻāĻĒā§āϝāĻžāĻ āϰāĻāύāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻāĻžāύāϤā§, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϏāĻāϏā§āĻĨāĻžāύāĻā§āϞāĻŋ āĻĻā§āĻā§āύ⧎
āύāĻŽā§āύāĻž
āĻā§āĻĄāϞā§āϝāĻžāĻŦ
āĻāĻŋāĻĄāĻŋāĻ
āĻŦā§āϞāĻ
{% āĻļāĻŦā§āĻĻāĻžāϰā§āĻĨā§ %}āĻāĻĒāύāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ
- āĻĻā§āϰāώā§āĻāĻŦā§āϝ: āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻŦāύā§āϧ āĻĨāĻžāĻāϞ⧠āϞāĻŋāĻā§āĻ āĻā§āĻā§āϏāĻ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ
- āĻāĻĒāύāĻžāϰ āϰāĻāύāĻž UI āĻāϰā§āĻāĻŋāĻā§āĻā§āĻ āĻāϰāĻž āĻšāĻā§āĻā§
- āϰāĻāύāĻžāϝāĻŧ UI āĻ āĻŦāϏā§āĻĨāĻž āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ
- āĻāĻŽā§āĻĒā§āĻ āĻāϰ āĻĒāĻžāϰā§āĻļā§āĻŦāĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž