SafeArea und die Notch
Teil des Abschnitts Layouts für jede Bildschirmgröße der Flutter-Journey von Coddy. Lektion 13 von 30.
Die meisten Smartphones haben keinen rechteckigen Bildschirm ohne Aussparungen. Die Uhr und die Kamerakerbe verdecken den oberen Bereich, und eine Home-Leiste verdeckt den unteren. Eine AppBar weiß das und verschiebt ihren Titel nach unten, aber eine Seite ohne sie beginnt direkt an der oberen Kante, unter der Uhr.
SafeArea verschiebt sein untergeordnetes Element aus diesen Bereichen heraus:
Scaffold(
body: SafeArea(
child: Column(
children: [...],
),
),
)Es fragt das Smartphone, wie viel von jeder Kante verdeckt ist, und fügt genau so viel Abstand hinzu. Bei einem Smartphone ohne Kerbe fügt es nichts hinzu, sodass derselbe Code auf jedes Smartphone passt.
Ein fester Padding kann das nicht: 16 Pixel sind auf einem Smartphone mit einer 47 Pixel hohen Statusleiste zu wenig und auf einem ohne Statusleiste zu viel.
Aufgabe
EinfachAuf einem Telefon mit einer Notch wird Good morning von der Uhr verdeckt und die Schaltfläche liegt auf der Home-Leiste. Halte die gesamte Seite von beiden Bereichen fern.
Probier es selbst
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'),
),
],
),
),
);
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Layouts für jede Bildschirmgröße
1Eine Zeile teilen
Expanded füllt die ZeilePlatz teilen mit flexFlexible umschließt sein KindSpacer schafft Abstand3Widgets stapeln
Widgets übereinander stapelnIn einer Ecke positionierenIn einer Box ausrichtenSafeArea und die NotchÜbe selbstständig: Online-Flutter-Compiler