Menyusun Layout UI ​
Aplikasi yang indah tidak hanya terdiri dari tumpukan teks yang menggantung tak beraturan. Dibutuhkan sebuah sistem tata letak (Layout System) untuk mensejajarkan posisi mereka ke Kiri, Kanan, Atas, maupun menumpuknya satu sama lain secara dinamis terlepas dari ukuran layar (Mobile yang kecil atau Desktop yang lega).
Widget utama layout adalah Row, Column, Container, dan Stack.
1. Menyusun Vertikal: Column ​
Jika kamu ingin menyusun widget di layar berbaris dari Atas ke Bawah, gunakan Widget penampung Column. Sebuah Column bisa menangkap lebih dari satu anak menggunakan properti Array list bernama children: [].
Column(
mainAxisAlignment: MainAxisAlignment.center, // Pusatkan susunan ke tengah layar atas-bawah
children: [
Text("Atas"),
Text("Tengah"),
Text("Bawah"),
]
)2. Menyusun Horizontal: Row ​
Kebalikannya, jika kamu ingin menyusun profil avatar di sebelah kiri dari nama pengguna (Menyamping Kiri ke Kanan), gunakan Row.
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // Menyebarkan jarak anak-anak ke ujung spasi layar
children: [
Icon(Icons.person),
Text("Raion Intern"),
Icon(Icons.arrow_forward),
]
)3. Container ​
Sebuah Container tidak terlihat sama sekali secara fisik kecuali kita memberikan warna kepadanya. Ini adalah kardus virtual tempat orang-orang membungkus widget lain agar ia dapat diberi Warna, Ruang Pojok (Padding & Margin), serta lengkungan sudut.
Container(
padding: const EdgeInsets.all(16.0), // Jarak ke dalam (memperbesar dinding)
margin: const EdgeInsets.only(top: 20), // Jarak menolak keluar
decoration: BoxDecoration(
color: Colors.blue, // Harus diletakkan di dalam decoration jika BoxDecoration dipakai
borderRadius: BorderRadius.circular(12),
),
child: const Text("Teks ini terkurung cantik di dalam Kotak Biru dengan sudut melengkung!"),
)4. Stack ​
Saat Row menyamping, dan Column ke bawah, apa yang terjadi jika ingin menaruh tulisan Persis "DI ATAS" tumpukan Gambar Background? Stack solusinya! Komponen paling bawah dari list children di kode, akan berada di layer terdepan paling mendekati mata pengguna layar.
Stack(
alignment: Alignment.center,
children: [
Container(width: 200, height: 200, color: Colors.blue), // Layer dasar
Container(width: 100, height: 100, color: Colors.red), // Layer menumpuk biru
Text("Terkena Tumpukan!"), // Layer paling atas pucuk
],
)Coba Sendiri: Interaktif Layout Builder! ​
Mari bereksperimen menggabungkan Column, Row, Container dan Stack untuk membuat Card Profil sederhana peserta Magang! Silakan klik tombol Run pada DartPad di bawah. Coba ubah nilai MainAxisAlignment atau warna kotaknya.