Lacking something fundamental with Compose
Lacking something fundamental with Compose
I am trying to convert a view based screen to Compose and while what I need should be very basic, somehow I can't get this to work. The use case at hand is a serial task where one step follows the other and the UI should reflect progress. But I seem to miss something fundamental because none of my Text() will update. Below is a simplified example of what I got:
undefined
override fun onCreate(savedInstanceState: Bundle?) { … setContent { Import() } } @Composable fun Import() { var step1 by remember { mutableStateOf("") } var step2 by remember { mutableStateOf("") } Column() { Text(text = step1) Text(text = step2) } } step1 = "Open ZIP file" val zipIn: ZipInputStream = openZIPFile() step1 = "✓ $step1" step2 = "Extract files" val count = extractFiles() step2 = "✓ $step2" … }
If I set the initial text in the remember line, like this
undefined
var step1 by remember { mutableStateOf("Open ZIP file") }
the text will show, but also never gets updated.
I also tried to move the logic part into a separate function which gets executed right after setContent() but then the step1/step2 aren't available for me to update.
#######
Edit:
Well, as expected this turned out to be really easy. I have to break this one
undefined
var step1 by remember { mutableStateOf("Open ZIP file") }
into 2 statements:
undefined
var step1String = mutableStateOf("Open ZIP file")
With step1String as a class wide variable so I can change it from other functions. In the Import() composable function al I need is this:
undefined
var step1 by remember { step1String }
Have to say Compose is growing on me… :-)