Skip to content

Instantly share code, notes, and snippets.

@lbenevento
Created September 6, 2021 16:16
Show Gist options
  • Save lbenevento/0940b0de752d288f3ad9867ea4d88e5e to your computer and use it in GitHub Desktop.
Save lbenevento/0940b0de752d288f3ad9867ea4d88e5e to your computer and use it in GitHub Desktop.
@ExperimentalMaterialApi
@Composable
fun Scaffold(
modifier: Modifier = Modifier,
scaffoldState: ScaffoldState = rememberScaffoldState(),
topBar: @Composable () -> Unit = {},
bottomBar: @Composable () -> Unit = {},
snackbarHost: @Composable (SnackbarHostState) -> Unit = { SnackbarHost(it) },
floatingActionButton: @Composable () -> Unit = {},
floatingActionButtonPosition: FabPosition = FabPosition.End,
isFloatingActionButtonDocked: Boolean = false,
statusBarColor: Color = MaterialTheme.colors.primary,
navigationBarColor: Color = MaterialTheme.colors.surface,
backgroundColor: Color = MaterialTheme.colors.background,
contentColor: Color = contentColorFor(backgroundColor),
content: @Composable (PaddingValues) -> Unit
) {
androidx.compose.material.Scaffold(
modifier = modifier,
scaffoldState = scaffoldState,
topBar = {
Column {
StatusBarInset(statusBarColor)
topBar()
}
},
bottomBar = {
bottomBar()
NavigationBarInset(navigationBarColor)
},
snackbarHost = snackbarHost,
floatingActionButton = floatingActionButton,
floatingActionButtonPosition = floatingActionButtonPosition,
isFloatingActionButtonDocked = isFloatingActionButtonDocked,
backgroundColor = backgroundColor,
contentColor = contentColor,
content = content
)
}
@Composable
private fun StatusBarInset(color: Color) {
Spacer(
modifier = Modifier
.background(color)
.statusBarsHeight()
.fillMaxWidth()
)
}
@Composable
private fun NavigationBarInset(color: Color) {
Spacer(
modifier = Modifier
.background(color)
.navigationBarsHeight()
.fillMaxWidth()
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment