Lompat ke konten utama
←

Flutter Dasar: Dart, Widget, dan State

Pelajaran 7 dari 18

Widget dan tata letak

Row, Column, Stack, dan Expanded

Setelah pelajaran ini kamu bisa memilih Row, Column, Stack, Expanded, dan perataan sumbu yang menghasilkan sketsa tata letak, serta menghitung lebar anak Expanded.

  • ±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

Row menyusun anak-anaknya mendatar dan Column menyusunnya menurun. Masing-masing punya sumbu utama, yaitu arah susunannya, dan sumbu silang yang tegak lurus dengannya: untuk Row sumbu utamanya mendatar, untuk Column menurun. mainAxisAlignment mengatur sebaran anak di sumbu utama, misalnya start, center, end, atau spaceEvenly yang membagi ruang kosong sama rata di antara anak dan di kedua tepi. crossAxisAlignment mengatur posisi di sumbu silang, misalnya start agar teks rata kiri di dalam Column. Secara bawaan Row dan Column memakai ruang sebanyak mungkin di sumbu utama; mainAxisSize: MainAxisSize.min memadatkan anak-anaknya.

Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  children: [
    const Text('Pesanan A-102'),
    const SizedBox(height: 8),
    Row(
      children: [
        Expanded(flex: 3, child: Text('Nasi goreng')),
        Expanded(flex: 1, child: Text('x2')),
      ],
    ),
  ],
)

Expanded membuat anak Row atau Column mengisi sisa ruang di sumbu utama. Sisa ruang dihitung setelah anak berukuran tetap dikurangi, lalu dibagi menurut flex, yang bawaannya 1. Di contoh, nama menu mendapat tiga perempat lebar dan jumlahnya seperempat. Stack menumpuk anak-anaknya: anak pertama menjadi dasar, dan anak berikutnya digambar di atasnya. Positioned menempatkan anak Stack pada jarak tertentu dari tepinya.

Latihan

0/3 lulus

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

Latihan 1 dari 3

Sketsa: tombol Tunai, QRIS, dan Kartu berjajar mendatar, dengan ruang kosong yang sama besar di antara tombol dan di kedua tepinya. Susunan mana yang menghasilkannya?

Pilih satu jawaban

Latihan 2 dari 3

Berapa lebar kolom Nama barang?

SizedBox(
  width: 360,
  child: Row(
    children: [
      Expanded(child: Text('Kode')),
      Expanded(flex: 2, child: Text('Nama barang')),
      SizedBox(width: 60, child: Text('Qty')),
    ],
  ),
)
Pilih satu jawaban

Latihan 3 dari 3

Apa urutan lapisan Stack ini dari paling bawah ke paling atas?

Stack(
  children: [
    Image.asset('img/nasi-uduk.jpg'),
    Container(color: Colors.black45, child: Text('Nasi Uduk')),
    Positioned(top: 8, right: 8, child: Icon(Icons.favorite)),
  ],
)
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke