SafeArea e o Notch
Parte da seção Layouts que se adaptam do Journey de Flutter da Coddy. Lição 13 de 30.
A maioria dos celulares não tem uma tela retangular desobstruída. O relógio e o recorte da câmera cobrem a parte de cima, e uma barra inicial cobre a parte de baixo. Uma AppBar sabe disso e desloca o título para baixo, mas uma página sem ela começa bem na borda superior, abaixo do relógio.
SafeArea desloca seu filho para fora dessas áreas:
Scaffold(
body: SafeArea(
child: Column(
children: [...],
),
),
)Ele verifica quanto de cada borda está coberto e adiciona exatamente esse espaço. Em um celular sem recorte, não adiciona nada, então o mesmo código funciona em todos os celulares.
Um Padding fixo não consegue fazer isso: 16 pixels é pouco demais em um celular cuja barra de status tem 47 pixels de altura e demais em um que não tem nenhuma.
Desafio
FácilEm um celular com notch, Good morning fica escondido sob o relógio, e o botão fica sobre a barra inicial. Mantenha a página inteira fora de ambos.
Experimente você mesmo
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
backgroundColor: Colors.orange.shade50,
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('Good morning', style: TextStyle(fontSize: 32)),
const Spacer(),
ElevatedButton(
onPressed: () {},
child: const Text('Start workout'),
),
],
),
),
);
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Layouts que se adaptam
1Compartilhando uma linha
Expanded preenche a linhaCompartilhando espaço com flexFlexible se ajusta ao filhoSpacer separa os elementos4Tamanhos e pontos de quebra
Largura total: double.infinityUma largura máximaTamanho da tela: MediaQueryPontos de quebra com LayoutBuilder3Empilhando Widgets
Empilhe WidgetsPosicionado em um CantoAlinhe Dentro de uma CaixaSafeArea e o NotchPratique por conta própria: Compilador de Flutter online