Lompat ke konten utama
←

Flutter Dasar: Dart, Widget, dan State

Pelajaran 8 dari 18

Widget dan tata letak

Constraints turun, ukuran naik, induk menentukan posisi

Setelah pelajaran ini kamu bisa menerapkan aturan constraints Flutter untuk memprediksi ukuran widget dan mendiagnosis galat overflow serta unbounded height.

  • ±13 menit
  • 3 latihan
  • Diperiksa 28 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Tata letak Flutter berbeda dari HTML, dan dokumentasi resmi meringkasnya dalam satu aturan: constraints turun, ukuran naik, induk menentukan posisi. Constraint adalah empat angka, yaitu lebar minimum dan maksimum serta tinggi minimum dan maksimum. Induk memberi constraint kepada anak, anak memilih ukurannya sendiri di dalam batas itu dan melaporkannya ke atas, lalu induk menempatkan anak. Akibatnya, widget tidak bisa berukuran sesukanya dan tidak menentukan posisinya sendiri.

Constraint ketat hanya menyisakan satu ukuran. Layar memberi constraint ketat kepada widget akar, sehingga Container(width: 100, height: 100) yang langsung menjadi akar tetap memenuhi layar. Center melonggarkan constraint menjadi minimum 0 dan maksimum seukuran layar, sehingga Container di dalamnya benar-benar 100 × 100.

// Row tidak membatasi lebar anaknya: teks panjang meluap keluar layar.
Row(children: [
  Icon(Icons.store),
  Text('Toko Sembako Pak Darto, Jalan Pemuda 21, Magelang, buka setiap hari'),
])

// Expanded memberi Text lebar sisa Row: teks turun ke baris berikutnya.
Row(children: [
  Icon(Icons.store),
  Expanded(child: Text('Toko Sembako Pak Darto, Jalan Pemuda 21, Magelang, buka setiap hari')),
])

Row dan Column tidak membatasi ukuran anak di sumbu utamanya. Anak yang terlalu besar memunculkan garis kuning-hitam dan pesan A RenderFlex overflowed. ListView langsung di dalam Column gagal dengan Vertical viewport was given unbounded height, karena ListView ingin setinggi mungkin sementara Column tidak memberi batas tinggi. Perbaikan keduanya serupa: bungkus anaknya dengan Expanded, atau beri ukuran pasti dengan SizedBox.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 1 dari 3

Apa yang tampil di layar?

void main() {
  runApp(Container(width: 100, height: 100, color: Colors.red));
}
Pilih satu jawaban

Latihan 2 dari 3

Baris ini memunculkan garis kuning-hitam di tepi kanan. Perubahan mana yang membuat teks turun ke baris berikutnya di dalam layar?

Row(
  children: [
    Icon(Icons.local_shipping),
    Text('Dikirim ke Kecamatan Tanjung Karang Pusat, Bandar Lampung, tiba dalam dua hari'),
  ],
)
Pilih satu jawaban

Latihan 3 dari 3

Berapa ukuran kotak hijau toska yang tampil?

Center(
  child: ConstrainedBox(
    constraints: const BoxConstraints(
      minWidth: 80,
      minHeight: 80,
      maxWidth: 160,
      maxHeight: 160,
    ),
    child: Container(color: Colors.teal, width: 20, height: 20),
  ),
)
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke