dave08
01/08/2024, 10:28 AMZach Klippenstein (he/him) [MOD]
01/08/2024, 4:19 PMdave08
01/08/2024, 4:34 PMsealed interface MainScaffoldState {
data object Full : MainScaffoldState
@Immutable
data class TitleOnly(
val title: String,
val dotMenu: List<DotMenuItem> = emptyList(),
) : MainScaffoldState
data object Search : MainScaffoldState
data object Manage : MainScaffoldState
}
@Composable
fun rememberMainScaffoldState() = remember {
mutableStateOf<MainScaffoldState>(MainScaffoldState.Full)
}
Scaffold(
// modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
snackbarHost = { SnackbarHost(hostState = snackbarState) },
topBar = {
when (val currState = mainScaffoldState.value) {
is MainScaffoldState.Full ->
dave08
01/08/2024, 4:35 PMmainScaffoldState
to my screens and set it there when neededdave08
01/08/2024, 4:37 PMdave08
01/08/2024, 4:39 PMdave08
01/08/2024, 4:40 PM@Composable
fun HomeScreen(mainScaffoldState: MUtableState<MAinScaffoldState>) {
mainScaffoledSTate.value = MAinScaffoldState.TitleOnly("...")
Zach Klippenstein (he/him) [MOD]
01/08/2024, 5:12 PMmainScaffoldState
. Worse, these two sources of truth form a feedback loop, which is always gonna be error-prone and hard to reason about.
2. Backwards data flow: state should flow down, not up.dave08
01/09/2024, 3:04 AM