Can we still use the variable delegate for variable pass through parameter?

Jetpack Compose tells you to respect Single Source of Truth principle, which means that you can not pass state as argument if you want to change that state inside your function.

So generally you have to choose one of two approaches:

  1. Pass both timerStartStop variable and onClick callback
@Composable
fun MyInnerControl(timerStartStop: Boolean, onClick: ()->Unit) {
    Button(onClick = onClick) {
        Text(if (timerStartStop) "Stop" else "Start")
    }
}
  1. Pass none of these
@Composable
fun MyInnerControl() {
    var timerStartStop by remember { mutableStateOf(true) }
    Button(onClick = {
        timerStartStop = !timerStartStop
    }) {
        Text(if (timerStartStop) "Stop" else "Start")
    }
}