Spacing
Einleitung
Das Spacing-Widget bietet eine saubere, lesbare Moeglichkeit, konsistente Abstaende zwischen UI-Elementen hinzuzufuegen. Anstatt manuell SizedBox-Instanzen in Ihrem gesamten Code zu erstellen, koennen Sie Spacing mit semantischen Voreinstellungen oder benutzerdefinierten Werten verwenden.
// Instead of this:
SizedBox(height: 16),
// Write this:
Spacing.md,
Voreingestellte Groessen
Spacing verfuegt ueber integrierte Voreinstellungen fuer gaengige Abstandswerte. Diese helfen, konsistente Abstaende in Ihrer gesamten App beizubehalten.
Vertikale Abstands-Voreinstellungen
Verwenden Sie diese in Column-Widgets oder ueberall, wo Sie vertikalen Abstand benoetigen:
| Voreinstellung | Groesse | Verwendung |
|---|---|---|
Spacing.zero |
0px | Bedingter Abstand |
Spacing.xs |
4px | Extra klein |
Spacing.sm |
8px | Klein |
Spacing.md |
16px | Mittel |
Spacing.lg |
24px | Gross |
Spacing.xl |
32px | Extra gross |
Column(
children: [
Text("Title"),
Spacing.sm,
Text("Subtitle"),
Spacing.lg,
Text("Body content"),
Spacing.xl,
ElevatedButton(
onPressed: () {},
child: Text("Action"),
),
],
)
Horizontale Abstands-Voreinstellungen
Verwenden Sie diese in Row-Widgets oder ueberall, wo Sie horizontalen Abstand benoetigen:
| Voreinstellung | Groesse | Verwendung |
|---|---|---|
Spacing.xsHorizontal |
4px | Extra klein |
Spacing.smHorizontal |
8px | Klein |
Spacing.mdHorizontal |
16px | Mittel |
Spacing.lgHorizontal |
24px | Gross |
Spacing.xlHorizontal |
32px | Extra gross |
Row(
children: [
Icon(Icons.star),
Spacing.smHorizontal,
Text("Rating"),
Spacing.lgHorizontal,
Text("5.0"),
],
)
Benutzerdefinierter Abstand
Wenn die Voreinstellungen nicht Ihren Beduerfnissen entsprechen, erstellen Sie benutzerdefinierte Abstaende:
Vertikaler Abstand
Spacing.vertical(12) // 12 logical pixels of vertical space
Horizontaler Abstand
Spacing.horizontal(20) // 20 logical pixels of horizontal space
Beide Dimensionen
Spacing(width: 10, height: 20) // Custom width and height
Beispiel
Column(
children: [
Text("Header"),
Spacing.vertical(40), // Custom 40px gap
Card(
child: Padding(
padding: EdgeInsets.all(16),
child: Row(
children: [
Icon(Icons.info),
Spacing.horizontal(12), // Custom 12px gap
Expanded(child: Text("Information text")),
],
),
),
),
],
)
Verwendung mit Slivers
Bei der Arbeit mit CustomScrollView und Slivers verwenden Sie die asSliver()-Methode:
CustomScrollView(
slivers: [
SliverAppBar(
title: Text("My App"),
),
Spacing.lg.asSliver(), // Converts to SliverToBoxAdapter
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => ListTile(title: Text("Item $index")),
childCount: 10,
),
),
Spacing.xl.asSliver(),
SliverToBoxAdapter(
child: Text("Footer"),
),
],
)
Die asSliver()-Methode umschliesst das Spacing-Widget in einem SliverToBoxAdapter, wodurch es mit Sliver-basierten Layouts kompatibel wird.
Bedingter Abstand
Verwenden Sie Spacing.zero fuer bedingten Abstand:
Column(
children: [
Text("Always visible"),
showExtraSpace ? Spacing.lg : Spacing.zero,
Text("Content below"),
],
)