4

I am developing an application for android devices, using the jetpack compose library.

Example I created inside a compose function

var taskVeriable = remember {mutableStateOf("Hello World")}

I need to update the value of variable from another compose function. Is there any way to achieve this?

@Composable
fun TestComposeA(){

var taskVeriable = remember {mutableStateOf("Hello World")}

TestComposeB(taskVeriable)

}

@Composable
fun TestComposeB(taskVeriable : String){
taskVeriable = "New Value"
}

I want to know if there is a way to do this.

Yavo
  • 43
  • 5

2 Answers2

6

You can pass mutable state and change it value later:

@Composable
fun TestComposeA(){

val taskVeriable = remember {mutableStateOf("Hello World")}

TestComposeB(taskVeriable)

}

@Composable
fun TestComposeB(taskVeriable : MutableState<String>){
taskVeriable.value = "New Value"
}
Roman Y
  • 266
  • 3
  • 5
2

You can pass a function that changes your state. This might help you:

@Composable
fun CompA() {
    var text by remember { mutableStateOf("") }

    CompB(
        text = text,
        onChange = { newText ->
            text = newText
        }
    )
}

@Composable
fun CompB(
    text: String,
    onChange: (String) -> Unit
) {
    TextField(value = text, onValueChange = { onChange(it) })
}
F.G.
  • 216
  • 5