Spacing
Pengantar
Widget Spacing menyediakan cara yang bersih dan mudah dibaca untuk menambahkan jarak yang konsisten antar elemen UI. Alih-alih membuat instance SizedBox secara manual di seluruh kode Anda, Anda dapat menggunakan Spacing dengan preset semantik atau nilai kustom.
// Instead of this:
SizedBox(height: 16),
// Write this:
Spacing.md,
Ukuran Preset
Spacing dilengkapi dengan preset bawaan untuk nilai jarak umum. Ini membantu menjaga jarak yang konsisten di seluruh aplikasi Anda.
Preset Spacing Vertikal
Gunakan ini di widget Column atau di mana pun Anda membutuhkan ruang vertikal:
| Preset | Ukuran | Penggunaan |
|---|---|---|
Spacing.zero |
0px | Spacing kondisional |
Spacing.xs |
4px | Ekstra kecil |
Spacing.sm |
8px | Kecil |
Spacing.md |
16px | Sedang |
Spacing.lg |
24px | Besar |
Spacing.xl |
32px | Ekstra besar |
Column(
children: [
Text("Title"),
Spacing.sm,
Text("Subtitle"),
Spacing.lg,
Text("Body content"),
Spacing.xl,
ElevatedButton(
onPressed: () {},
child: Text("Action"),
),
],
)
Preset Spacing Horizontal
Gunakan ini di widget Row atau di mana pun Anda membutuhkan ruang horizontal:
| Preset | Ukuran | Penggunaan |
|---|---|---|
Spacing.xsHorizontal |
4px | Ekstra kecil |
Spacing.smHorizontal |
8px | Kecil |
Spacing.mdHorizontal |
16px | Sedang |
Spacing.lgHorizontal |
24px | Besar |
Spacing.xlHorizontal |
32px | Ekstra besar |
Row(
children: [
Icon(Icons.star),
Spacing.smHorizontal,
Text("Rating"),
Spacing.lgHorizontal,
Text("5.0"),
],
)
Spacing Kustom
Ketika preset tidak sesuai dengan kebutuhan Anda, buat spacing kustom:
Spacing Vertikal
Spacing.vertical(12) // 12 logical pixels of vertical space
Spacing Horizontal
Spacing.horizontal(20) // 20 logical pixels of horizontal space
Kedua Dimensi
Spacing(width: 10, height: 20) // Custom width and height
Contoh
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")),
],
),
),
),
],
)
Menggunakan dengan Sliver
Saat bekerja dengan CustomScrollView dan sliver, gunakan metode asSliver():
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"),
),
],
)
Metode asSliver() membungkus widget Spacing dalam SliverToBoxAdapter, membuatnya kompatibel dengan layout berbasis sliver.
Spacing Kondisional
Gunakan Spacing.zero untuk spacing kondisional:
Column(
children: [
Text("Always visible"),
showExtraSpace ? Spacing.lg : Spacing.zero,
Text("Content below"),
],
)