📚 Daftar Widget Flutter Lengkap

🧱 1. Widget Dasar

WidgetFungsiKapan Digunakan
StatelessWidgetWidget tanpa state (data) internalUntuk UI statis yang tidak berubah
StatefulWidgetWidget dengan state (data) internalUntuk UI dinamis yang bisa berubah
TextMenampilkan teks sederhanaLabel, paragraf, judul, dll.
RichTextMenampilkan teks dengan berbagai styleSaat butuh kata tebal/miring dalam satu kalimat
IconMenampilkan ikon dari set ikonUntuk simbol UI yang umum

🔷 2. Layout & Struktur

WidgetFungsiKapan Digunakan
ContainerWrapper serbaguna untuk styling & posisiMemberi padding, margin, warna, dekorasi
RowMenyusun widget anak secara horizontalUntuk item yang berjajar ke samping
ColumnMenyusun widget anak secara vertikalUntuk item yang berbaris ke bawah
StackMenumpuk widget di atas satu sama lainMembuat overlay, badge di atas ikon
ExpandedMengisi ruang tersisa di Row/ColumnAgar widget meregang mengisi sisa ruang
FlexibleMemberi fleksibilitas ukuran di Row/ColumnMembagi ruang secara proporsional
SizedBoxKotak dengan ukuran tetap atau spasiMemberi jarak antar elemen secara eksplisit
PaddingMemberi spasi di sekeliling widget anakUntuk memberi ruang napas di dalam kontainer
CenterMemposisikan anak di tengah parentCara cepat menengahkan satu widget
CardPanel dengan sudut tumpul dan bayanganMengelompokkan informasi terkait dalam satu blok
WrapOtomatis ke baris baru jika tidak muatUntuk chip/tag yang jumlahnya dinamis

🟢 3. List & Grid

WidgetFungsiKapan Digunakan
ListViewDaftar item yang bisa di-scrollUntuk daftar item yang jumlahnya sedikit dan statis
ListView.builderLazy loading list (membangun saat terlihat)Daftar item yang panjang atau dari API
GridViewGrid layout yang bisa di-scrollGaleri foto, katalog produk
SingleChildScrollViewScroll untuk satu widget anakMembuat halaman form atau konten statis jadi scrollable
ListTileBaris list standar (ikon, teks, aksi)Item standar di dalam ListView
DataTableTabel untuk menampilkan data terstrukturMenampilkan data tabular seperti spreadsheet
PageViewHalaman yang bisa digeser (swipe)Untuk onboarding screen atau galeri swipe

🟡 4. Input & Form

WidgetFungsiKapan Digunakan
FormWadah untuk field inputMengelola validasi dan penyimpanan grup input
TextFormFieldInput teks dengan integrasi FormInput email, password, dll., dengan validasi
Checkbox / Radio / SwitchPilihan biner atau tunggalPengaturan, persetujuan syarat, pilihan opsi
DropdownButtonTombol dropdown dengan daftar pilihanMemilih satu item dari banyak opsi
SliderPenggeser untuk memilih nilai numerikPengaturan volume, kecerahan, rentang harga
showDatePickerFungsi untuk menampilkan dialog tanggalUntuk input tanggal lahir atau jadwal

🔴 5. Navigasi & Halaman

WidgetFungsiKapan Digunakan
ScaffoldStruktur dasar halaman Material DesignSebagai root dari setiap halaman aplikasi
AppBarBar bagian atas halamanMenampilkan judul, aksi, dan tombol kembali
BottomNavigationBarTab navigasi di bagian bawahPindah antar halaman utama aplikasi (misal: Home, Profile)
NavigatorMengelola tumpukan halaman (routes)Untuk pindah halaman (push) dan kembali (pop)
TabBar & TabBarViewMembuat tab horizontalDi bawah AppBar untuk sub-navigasi
DrawerPanel navigasi yang muncul dari sampingMenu tersembunyi dengan banyak link navigasi

🔵 6. Interaksi & Aksi

WidgetFungsiKapan Digunakan
ElevatedButtonTombol dengan latar belakang (emphasis)Untuk aksi utama di halaman (misal: "Simpan", "Login")
TextButtonTombol berupa teks tanpa latar belakangUntuk aksi sekunder (misal: "Batal", "Lupa Password")
IconButtonTombol yang hanya berisi ikonAksi umum seperti hapus, edit, favorit di dalam list
FloatingActionButtonTombol bulat yang "mengambang"Aksi utama dan kontekstual di halaman (misal: "Tambah")
GestureDetectorMendeteksi berbagai gesture (ketuk, geser)Membuat widget apa pun jadi interaktif
InkWellMemberi efek "ripple" saat diketukMemberi feedback visual pada interaksi di widget kustom

🟣 7. Gambar & Media

WidgetFungsiKapan Digunakan
Image.assetMenampilkan gambar dari folder assetsUntuk logo, ikon kustom, gambar statis
Image.networkMenampilkan gambar dari URLMenampilkan gambar dari internet/API
FadeInImageGambar placeholder saat gambar asli dimuatMemperhalus pengalaman memuat gambar dari network
CircleAvatarWadah bundar, biasanya untuk gambarMenampilkan foto profil pengguna
PlaceholderKotak silang untuk menandai ruang UISaat merancang layout sebelum ada konten final

💬 8. Dialog & Umpan Balik

WidgetFungsiKapan Digunakan
AlertDialogDialog pop-up untuk konfirmasi/informasiMeminta konfirmasi hapus, menampilkan pesan error
SnackBarNotifikasi sementara di bawah layarMemberi umpan balik singkat (misal: "Item disimpan")
BottomSheetPanel yang muncul dari bawah layarMenampilkan opsi tambahan tanpa pindah halaman
TooltipMenampilkan pesan saat widget ditahan lamaMemberi petunjuk fungsi sebuah ikon/tombol
CircularProgressIndicatorIndikator loading berputarMenandakan proses yang sedang berjalan (tanpa progres)
LinearProgressIndicatorIndikator loading berupa bar horizontalMenandakan progres unduhan atau unggahan

🟤 9. Async & State Management

WidgetFungsiKapan Digunakan
FutureBuilderMembangun UI berdasarkan hasil FutureMenampilkan data dari API atau operasi async sekali jalan
StreamBuilderMembangun UI berdasarkan data dari StreamMenampilkan data realtime (misal: chat, data sensor)
ValueListenableBuilderMembangun UI dari perubahan satu nilaiUntuk state management sederhana tanpa package eksternal