feat(connector): allow for composable objects to coexist with nav drawer

This commit is contained in:
Anthony 2024-04-01 04:54:05 +02:00
parent 8f8ae61325
commit 32c9be2eee

View File

@ -32,15 +32,16 @@ fun App() {
AppTheme { AppTheme {
var showContent by remember { mutableStateOf(false) } var showContent by remember { mutableStateOf(false) }
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
AppScaffold() AppScaffold {
Button(onClick = { showContent = !showContent }) { Button(onClick = { showContent = !showContent }) {
Text("Click me!") Text("Click me!")
} }
AnimatedVisibility(showContent) { AnimatedVisibility(showContent) {
val greeting = remember { Greeting().greet() } val greeting = remember { Greeting().greet() }
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
Image(painterResource(Res.drawable.compose_multiplatform), null) Image(painterResource(Res.drawable.compose_multiplatform), null)
Text("Compose: $greeting") Text("Compose: $greeting")
}
} }
} }
} }
@ -48,7 +49,7 @@ fun App() {
} }
@Composable @Composable
fun AppScaffold() { fun AppScaffold(content: @Composable() () -> Unit) {
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
@ -58,11 +59,16 @@ fun AppScaffold() {
}, },
) { innerPadding -> ) { innerPadding ->
Column( Column(
modifier = Modifier.padding(innerPadding), modifier = Modifier.padding(innerPadding)
verticalArrangement = Arrangement.spacedBy(16.dp)
) { ) {
NavigationDrawer(drawerState) NavigationDrawer(drawerState) {
Text("Test") Column(
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
content()
Text("Test")
}
}
} }
} }
} }
@ -112,7 +118,10 @@ fun TopBar(
*/ */
@OptIn(ExperimentalResourceApi::class) @OptIn(ExperimentalResourceApi::class)
@Composable @Composable
fun NavigationDrawer(drawerState: DrawerState) { fun NavigationDrawer(
drawerState: DrawerState,
content: @Composable() () -> Unit,
) {
ModalNavigationDrawer( ModalNavigationDrawer(
drawerState = drawerState, drawerState = drawerState,
drawerContent = { drawerContent = {
@ -164,5 +173,7 @@ fun NavigationDrawer(drawerState: DrawerState) {
} }
} }
} }
) {} ) {
content()
}
} }