Scaffold
No Material Design, um esqueleto é uma estrutura fundamental que fornece uma plataforma padronizada para interfaces de usuário complexas. Ele mantém diferentes partes da interface, como barras de apps e botões de ação flutuantes, oferecendo aos apps uma aparência coerente.
Exemplo
O elemento combinável Scaffold
fornece uma API simples que pode ser usada para
montar rapidamente a estrutura do app de acordo com as diretrizes do Material Design.
O Scaffold
aceita vários elementos combináveis como parâmetros. Entre elas estão as
seguintes:
topBar
: a barra de apps na parte de cima da tela.bottomBar
: a barra de apps na parte de baixo da tela.floatingActionButton
: um botão que passa por cima do canto inferior direito da tela e pode ser usado para mostrar ações importantes.
Para conferir exemplos mais detalhados sobre como implementar barras de apps superiores e inferiores, consulte a página de barras de apps.
Também é possível transmitir o conteúdo Scaffold
como faria com outros contêineres. Ele transmite
um valor innerPadding
para a lambda content
, que pode ser usada em elementos
combináveis filhos.
O exemplo a seguir mostra como implementar o
Scaffold
. Ele contém uma barra de apps superior, uma barra de apps inferior e um botão de ação flutuante
que interage com o estado interno de Scaffold
.
@Composable fun ScaffoldExample() { var presses by remember { mutableIntStateOf(0) } Scaffold( topBar = { TopAppBar( colors = topAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, ), title = { Text("Top app bar") } ) }, bottomBar = { BottomAppBar( containerColor = MaterialTheme.colorScheme.primaryContainer, contentColor = MaterialTheme.colorScheme.primary, ) { Text( modifier = Modifier .fillMaxWidth(), textAlign = TextAlign.Center, text = "Bottom app bar", ) } }, floatingActionButton = { FloatingActionButton(onClick = { presses++ }) { Icon(Icons.Default.Add, contentDescription = "Add") } } ) { innerPadding -> Column( modifier = Modifier .padding(innerPadding), verticalArrangement = Arrangement.spacedBy(16.dp), ) { Text( modifier = Modifier.padding(8.dp), text = """ This is an example of a scaffold. It uses the Scaffold composable's parameters to create a screen with a simple top app bar, bottom app bar, and floating action button. It also contains some basic inner content, such as this text. You have pressed the floating action button $presses times. """.trimIndent(), ) } } }
Essa implementação aparece da seguinte maneira: