SafeArea et l’encoche
Fait partie de la section Des mises en page adaptées du Journey Flutter de Coddy. Leçon 13 sur 30.
La plupart des téléphones n’ont pas un écran parfaitement rectangulaire. L’horloge et l’encoche de l’appareil photo recouvrent le haut, et une barre d’accueil recouvre le bas. Un AppBar le sait et descend son titre, mais une page qui n’en a pas commence juste au bord supérieur, sous l’horloge.
SafeArea éloigne son enfant de ces zones :
Scaffold(
body: SafeArea(
child: Column(
children: [...],
),
),
)Il demande au téléphone quelle partie de chaque bord est recouverte et ajoute exactement l’espace nécessaire. Sur un téléphone sans encoche, il n’ajoute rien, de sorte que le même code convient à tous les téléphones.
Un Padding fixe ne peut pas faire cela : 16 pixels, c’est trop peu sur un téléphone dont la barre d’état mesure 47 pixels de haut, et trop sur un téléphone qui n’en a pas.
Défi
FacileSur un téléphone avec une encoche, Good morning se cache sous l’horloge et le bouton se trouve sur la barre d’accueil. Garde toute la page à l’écart des deux.
Essayez vous-même
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'),
),
],
),
),
);
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Des mises en page adaptées
1Partager une ligne
Expanded remplit la lignePartager l’espace avec flexFlexible épouse son enfantSpacer écarte les éléments4Tailles et points de rupture
Pleine largeur : double.infinityUne largeur maximaleTaille de l’écran : MediaQueryPoints de rupture de LayoutBuilder2L’erreur de débordement
L’erreur de débordementCorrection du débordement : agrandirCorrection du débordement : faire défilerCorrection du débordement : renvoyer à la ligneEspacement à l’intérieur d’un renvoi à la ligne5Énumérations et switch
Énumérations pour les types d’écranUtiliser switch avec une énumérationExpressions switch3Empiler des widgets
Empiler des widgets les uns sur les autresPositionner dans un coinAligner à l’intérieur d’une boîteSafeArea et l’encocheEntraînez-vous par vous-même : Compilateur Flutter en ligne