Piotr Prus
10/01/2021, 9:35 AMPiotr Prus
10/01/2021, 9:37 AM@Composable
fun MyComposable() {
var myNumber: Int? = remember { mutableStateOf(null) }
Text(text = "$myNumber")
Button(onCLick = { myNumber = Random.nextInt(0, 100) }) { Text("Click me") }
}
having such a function I would like to react on change, but have an access to new number and old onePiotr Prus
10/01/2021, 9:38 AM@Composable
fun MyComposable() {
var myNumber: Int? = remember { mutableStateOf(null) }
LaunchedEffect(myNumber) {
// I tried to access the previous value from here, but I didnt find it :(
}
Text(text = "$myNumber")
Button(onCLick = { myNumber = 2 }) { Text("Click me") }
}
Piotr Prus
10/01/2021, 9:40 AMsnapshotFlow
, but the lastValue
cannot be accessed from itCsaba Kozák
10/01/2021, 12:01 PMvar previousNumber by remember {
mutableStateOf(0)
}
var currentNumberNumber by remember {
mutableStateOf(0)
}
Button(onClick = {
previousNumber = currentNumberNumber
currentNumberNumber++
}) {
Text(text = "click me")
}
LaunchedEffect(previousNumber, currentNumberNumber) {
// action based on previous and current
}
Csaba Kozák
10/01/2021, 12:10 PMsnapshotFlow
could also help:
LaunchedEffect(currentNumberNumber) {
snapshotFlow {
currentNumberNumber
}.scan(0 to 0) { accumulator, value ->
accumulator.second to value
}.collect {
val previousValue = it.first
// action
}
}
Piotr Prus
10/01/2021, 2:15 PM