Página inferior parcial

Você pode mostrar parcialmente uma folha inferior e, em seguida, permitir que o usuário a exiba em tela cheia ou a descarte.

Para fazer isso, transmita ao ModalBottomSheet uma instância de SheetState com skipPartiallyExpanded definido como false.

Exemplo

Este exemplo demonstra como usar a propriedade sheetState de ModalBottomSheet para mostrar a planilha apenas parcialmente no início:

@Composable
fun PartialBottomSheet() {
    var showBottomSheet by remember { mutableStateOf(false) }
    val sheetState = rememberModalBottomSheetState(
        skipPartiallyExpanded = false,
    )

    Column(
        modifier = Modifier.fillMaxWidth(),
        horizontalAlignment = Alignment.CenterHorizontally,
    ) {
        Button(
            onClick = { showBottomSheet = true }
        ) {
            Text("Display partial bottom sheet")
        }

        if (showBottomSheet) {
            ModalBottomSheet(
                modifier = Modifier.fillMaxHeight(),
                sheetState = sheetState,
                onDismissRequest = { showBottomSheet = false }
            ) {
                Text(
                    "Swipe up to open sheet. Swipe down to dismiss.",
                    modifier = Modifier.padding(16.dp)
                )
            }
        }
    }
}

Pontos principais sobre o código

Neste exemplo, observe o seguinte:

  • showBottomSheet controla se o app mostra a página inferior.
  • sheetState é uma instância de SheetState em que skipPartiallyExpanded é falso.
  • ModalBottomSheet usa um modificador que garante que ele preencha a tela quando totalmente expandido.
  • ModalBottomSheet usa sheetState como o valor do parâmetro sheetState.
    • Como resultado, a planilha só aparece parcialmente quando é aberta pela primeira vez. O usuário pode arrastar ou deslizar para abrir a tela cheia ou fechar o widget.
  • O lambda onDismissRequest controla o que acontece quando o usuário tenta fechar a página inferior. Nesse caso, apenas a planilha é removida.

Resultados

Quando o usuário pressiona o botão pela primeira vez, a página é exibida parcialmente:

Uma página inferior que inicialmente preenche apenas parte da tela. O usuário pode deslizar para preencher a tela com ele ou dispensá-lo.
Figura 1. Página inferior parcialmente exibida.

Se o usuário deslizar para cima na folha, ela vai preencher a tela:

Uma página inferior que o usuário expandiu para preencher a tela.
Figura 2. Folha inferior em tela cheia.

Outros recursos