eygraber
03/14/2023, 2:33 AMBoolean literal is being passed in from. Anyone have any idea why this is happening? Code in 🧵eygraber
03/14/2023, 2:33 AMTopAppBar is scrolled, Scaffold's content is recomposed (which makes sense since innerPadding is changing). I would expect MyContent to be skipped (since it takes a stable lambda and a parameter that is set to a Boolean literal), but it is called on every recompose.
However, if I hardcode MyContent's isVisible = true instead of isVisible = isVisible then it does get skipped.
@Composable
fun Test() {
MyContentWrapper(
content = {},
isVisible = true
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun MyContentWrapper(
content: @Composable () -> Unit,
isVisible: Boolean = true
) {
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = "TopAppBar") },
scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
)
}
) { innerPadding ->
Box(
modifier = Modifier.padding(innerPadding)
) {
MyContent(
content = content,
isVisible = isVisible
)
}
}
}
@Composable
private fun MyContent(
content: @Composable () -> Unit,
isVisible: Boolean
) {
Log.e("TEST", "RECOMPOSE")
if(isVisible) {
content()
}
}Ben Trengrove [G]
03/14/2023, 2:45 AMeygraber
03/14/2023, 2:49 AMBen Trengrove [G]
03/14/2023, 2:50 AMeygraber
03/14/2023, 2:59 AMeygraber
03/14/2023, 3:07 AMBoolean in an Immutable data class even outside the scope of Scaffold then it doesn't recompose.Ben Trengrove [G]
03/14/2023, 3:10 AMBen Trengrove [G]
03/14/2023, 3:12 AMeygraber
03/14/2023, 3:15 AMeygraber
03/15/2023, 4:22 AM