Widget Container
di Flutter adalah salah satu widget paling fleksibel dan sering digunakan. Fungsinya mirip seperti sebuah box yang dapat digunakan untuk membungkus widget lain dan mengatur berbagai properti visual.
Fungsi Utama Container
:
-
Menampung widget lain
Container bisa digunakan sebagai pembungkus untuk satu widget anak melalui propertichild
. -
Memberi padding, margin, dan alignment
-
padding
: jarak ke dalam antara batas Container dan widget anaknya. -
margin
: jarak ke luar dari Container ke widget lain. -
alignment
: posisi child di dalam Container.
-
-
Menentukan ukuran
-
width
danheight
bisa digunakan untuk menetapkan ukuran tertentu. -
Atau bisa dibiarkan fleksibel tergantung isi atau parent.
-
-
Memberi dekorasi (warna, border, radius, dll)
Menggunakan propertidecoration
, kamu bisa menambahkan:-
Warna latar (
color
) -
Border
-
Border radius (sudut melengkung)
-
Shadow
-
Background image
-
-
Transformasi dan animasi
Bisa digunakan dengan propertitransform
untuk memutar, menerjemahkan, atau menskalakan widget.
Contoh:
Kalau kamu mau tahu kapan lebih baik pakai Container
atau Padding
/SizedBox
, bisa aku jelaskan juga.
Ini penjelasannya supaya kamu tahu kapan sebaiknya pakai Container
, Padding
, atau SizedBox
di Flutter:
1. Container
Gunakan saat kamu butuh kombinasi dari:
-
Padding
-
Margin
-
Ukuran (width/height)
-
Warna/background
-
Border atau radius
-
Alignment
Kelebihan: serbaguna, bisa melakukan banyak hal dalam satu widget.
Contoh:
Container(
width: 100,
height: 100,
color: Colors.red,
padding: EdgeInsets.all(10),
child: Text('Isi'),
)
2. Padding
Gunakan saat kamu hanya butuh memberi ruang di dalam widget (jarak dari tepi ke konten).
Lebih ringan dan efisien daripada Container.
Contoh:
3. SizedBox
Gunakan saat kamu hanya ingin mengatur ukuran atau membuat jarak (spasi kosong).
Contoh 1: Mengatur ukuran
Contoh 2: Memberi spasi antar widget
Rangkuman Sederhana:
Tujuan | Widget yang cocok |
---|---|
Padding (jarak dalam) | Padding |
Margin, padding, warna, border | Container |
Hanya untuk spasi atau ukuran | SizedBox |
Kalau kamu butuh contoh lebih spesifik sesuai layout yang kamu bikin, tinggal kasih tahu aja ya!
Mari kita bahas lebih dalam dan praktis—kapan sebaiknya kamu pilih Container
, Padding
, atau SizedBox
dalam situasi nyata:
1. Mau atur posisi konten dengan jarak ke dalam (padding)?
Gunakan Padding
!
Contoh:
Kenapa? Karena Padding
lebih ringan dan langsung fokus ke satu tujuan: kasih ruang di dalam.
2. Mau kasih ruang antar widget (jarak kosong)?
Gunakan SizedBox
!
Contoh:
Kenapa? Karena ini lebih cepat dan efisien daripada Container
.
3. Mau bikin box dengan background, border, padding, dan ukuran?
Gunakan Container
!
Contoh:
Kenapa? Karena kamu butuh gabungan properti yang hanya bisa dilakukan oleh Container
.
BONUS: Kombinasi yang Efisien
Kalau kamu butuh padding dan background color saja, kamu bisa gabungkan Padding
+ DecoratedBox
, dan ini lebih hemat daripada langsung pakai Container
.
Kesimpulan Singkat
Tujuan | Gunakan |
---|---|
Hanya kasih jarak dalam | Padding |
Hanya kasih spasi antar widget atau ukuran tetap | SizedBox |
Butuh kombinasi (padding, warna, border, ukuran, alignment) | Container |
Optimasi performa (jangan selalu pakai Container ) | Gunakan widget yang sesuai kebutuhan saja |
Column
dan Row
ini penting banget karena dua widget ini adalah dasar dari layout di Flutter. Yuk langsung aja:1. Column
Digunakan untuk menyusun widget secara vertikal (atas ke bawah).
Struktur Umum:
Contoh Sederhana:
Properti Penting:
-
mainAxisAlignment
→ mengatur posisi widget di sumbu utama (vertikal). -
crossAxisAlignment
→ mengatur posisi widget di sumbu silang (horizontal).
Contoh:
2. Row
Digunakan untuk menyusun widget secara horizontal (kiri ke kanan).
Struktur Umum:
Contoh Sederhana:
Properti Penting:
-
mainAxisAlignment
→ mengatur posisi widget di sumbu utama (horizontal). -
crossAxisAlignment
→ mengatur posisi widget di sumbu silang (vertikal).
Contoh:
Catatan Penting:
-
Column dan Row butuh ruang. Kalau kontennya melebihi layar, bisa error (
overflow
). Solusinya? Bungkus pakaiSingleChildScrollView
atauExpanded
/Flexible
untuk mengatur space. -
Kalau kamu pakai
Column
dalamColumn
, hati-hati dengan tinggi widgetnya. Bisaoverflow
juga.
Tips Kombinasi:
Contoh layout kartu info:
Kalau kamu punya layout tertentu yang pengen dibikin dengan Column
dan Row
, tinggal bilang aja. Bisa aku bantu bikinin strukturnya!