Abdul Hafeez Sajid
12/21/2022, 10:00 AMsomeComposable() with a BasicTextField, Text and LaunchedEffect but its showing weird behaviour. When I call someComposable(), onFocusChanged event occurs first and then LaunchedEffect is called and hence Text does not show. But during testing, LaunchedEffect is called first and then onFocusChanged is called and Text shows up. I can’t figure out why the order is different in simple calling and in testing. Kindly guide me if someone has any idea what is going on. Code attached in the thread.Abdul Hafeez Sajid
12/21/2022, 10:01 AM@Composable
fun someComposable() {
var text by remember {
mutableStateOf("")
}
var show by remember {
mutableStateOf(false)
}
LaunchedEffect(key1 = Unit, block = {
Log.d(TAG, "someComposable(): LaunchedEffect()")
show = false
})
BasicTextField(
value = text,
onValueChange = { text = it },
modifier = Modifier.onFocusChanged {
Log.d(TAG, "someComposable(): onFocusChanged()")
show = true
})
if (show) {
Text(text = "Text", Modifier.testTag("text_tag"))
}
}
@Test
fun testSomeComposable() {
composeTestRule.setContent {
someComposable()
}
composeTestRule.onNodeWithTag("text_tag", true).assertExists()
}Zach Klippenstein (he/him) [MOD]
12/21/2022, 11:01 PMZach Klippenstein (he/him) [MOD]
12/22/2022, 12:46 AMAbdul Hafeez Sajid
12/22/2022, 5:47 AM