Scaffold - devrath/ComposeAlchemy GitHub Wiki
About the component
- It is a material-3 component from the
compose
library of thematerial-3
design. - It provides a way to organize the below components in certain material-specific guidelines.
- Top App bar
- Drawer
- Floating Action Bar
- Bottom Navigation
- Content Area
- Snack Bar
- They provide slots for ready-made components
Visualization
Code
@OptIn(ExperimentalLayoutApi::class, ExperimentalMaterial3Api::class)
@Composable
fun ScaffoldDemoScreen(modifier: Modifier = Modifier) {
val snackBarState = remember { SnackbarHostState() }
val snackBarScope = rememberCoroutineScope()
Scaffold(
topBar = {
TopAppBar(
title = {
Text("Title")
},
navigationIcon = {
Icon(
imageVector = Icons.AutoMirrored.Default.ArrowBack,
contentDescription = "Back"
)
}
)
},
floatingActionButton = {
FloatingActionButton(onClick = {
snackBarScope.launch {
snackBarState.showSnackbar(message = "Hello World")
}
}) {
Icon(imageVector = Icons.Default.Add, contentDescription = "Place")
}
},
snackbarHost = {
SnackbarHost(
hostState = snackBarState
)
},
bottomBar = {
BottomAppBar {
NavigationBarItem(
selected = false,
onClick = {},
icon = {
Icon(
imageVector = Icons.Default.Home,
contentDescription = "Home"
)
},
label = {
Text(text = "Home")
}
)
NavigationBarItem(
selected = false,
onClick = {},
icon = {
Icon(
imageVector = Icons.Default.Person,
contentDescription = "Profile"
)
},
label = {
Text(text = "Profile")
}
)
}
},
floatingActionButtonPosition = FabPosition.Center
) { padding ->
Box(
modifier = Modifier
.fillMaxSize()
.background(color = Color.Gray)
.padding(padding),
contentAlignment = Alignment.Center
){
Text("Content")
}
}
}
Output