AppBar — adalah widget panel atas layar di Flutter yang mengimplementasikan komponen Material Design dengan judul, tindakan, tombol navigasi, dan tab. Berbeda dengan panel khusus pada Row atau Stack, AppBar menyediakan arsitektur siap pakai dengan tinggi yang benar 56dp (48dp dalam keadaan diciutkan) dan pemrosesan SafeArea otomatis. Menurut Flutter API Reference (2026), AppBar mendukung animasi saat scroll melalui SliverAppBar dan integrasi dengan Material 3 melalui parameter forceMaterialTransparency. Dalam aplikasi seluler tipikal, AppBar berperan sebagai pusat navigasi dan informasi, menggabungkan judul halaman, tindakan sistem, dan perpindahan antar bagian.
Poin utama
AppBar — adalah komponen Material standar dari panel atas yang ditampilkan di bagian atas Scaffold. Ini berisi judul layar, tombol navigasi (biasanya ikon hamburger atau panah “Kembali”) dan tindakan — ikon yang membuka pencarian, pengaturan, atau fungsi lainnya. AppBar secara otomatis menyesuaikan dengan platform: di Android menggunakan Material bottom-shadow standar, di iOS — desain yang lebih datar dengan transparansi.
AppBar mengimplementasikan antarmuka PreferredSizeWidget, yang berarti tingginya tetap dan diketahui sebelum pembangunan. Secara default, tinggi AppBar adalah 56dp di Android dan 44dp di iOS dalam orientasi potret, dengan mempertimbangkan SafeArea di atas. Fitur ini memungkinkan Scaffold untuk menghitung terlebih dahulu ruang yang tersedia untuk body, menghindari pengomposisian ulang saat rendering.
Menurut Flutter Material Library Guide (2026), AppBar telah melalui beberapa iterasi: di Flutter 1.x adalah wadah sederhana dengan teks, di Flutter 2.x mendapat dukungan untuk Material 3 dan flexibleSpace, dan di Flutter 3.x — integrasi dengan System UI (warna bilah status, transparansi). AppBar modern mendukung Dynamic Color dari Material You pada perangkat Android 12+.
AppBar menyediakan serangkaian parameter yang mengontrol setiap bagian dari panel atas. Memahami properti ini memungkinkan penyesuaian panel yang fleksibel untuk setiap kebutuhan desain tanpa membuat solusi khusus.
| Properti | Tipe | Deskripsi |
|---|---|---|
| title | Widget? | Judul utama panel, biasanya Text dengan nama layar |
| leading | Widget? | Widget di kiri judul (tombol “Kembali” atau ikon menu) |
| actions | List<Widget>? | Daftar widget tindakan di kanan (IconButton, PopupMenuButton) |
| bottom | PreferredSizeWidget? | Area bawah untuk TabBar atau widget khusus |
| flexibleSpace | Widget? | Widget latar belakang yang dianimasikan saat scroll di SliverAppBar |
| backgroundColor | Color? | Warna latar belakang panel, menggantikan warna tema |
| elevation | double | Bayangan di bawah panel, menciptakan efek terangkat di atas konten |
| centerTitle | bool? | Pemusatan judul (true — perilaku Material 3, false — gaya Android) |
Properti title menerima widget apa pun, tetapi yang paling sering digunakan adalah Text dengan pengaturan gaya melalui TextStyle. Untuk judul panjang, disarankan untuk membungkus title dalam Flexible agar teks terpotong dengan benar saat ruang terbatas. Properti leading secara otomatis diganti dengan BackButton saat beralih ke layar bersarang melalui Navigator.push, jika tidak ditentukan secara eksplisit.
Daftar actions berisi widget yang diratakan ke tepi kanan AppBar. Setiap elemen tidak boleh lebih lebar dari 48dp (standar Material Design). Untuk mengelompokkan tindakan, gunakan PopupMenuButton — ini menyembunyikan opsi yang kurang penting dalam menu dropdown dan mematuhi rekomendasi Material tentang kepadatan antarmuka.
AppBar mendukung kustomisasi mendalam melalui properti warna, bayangan, dan margin. Tampilan dasar diwarisi dari tema aplikasi, tetapi setiap properti dapat diganti secara individual. Mari kita lihat skenario pengaturan utama.
Warna latar belakang AppBar diatur melalui backgroundColor. Jika tidak ditentukan, appBarTheme dari ThemeData digunakan. Di Material 3, warna AppBar dihitung secara otomatis dari ColorScheme.primary, tetapi dapat diganti untuk layar tertentu. Untuk AppBar transparan (sering digunakan di profil), atur backgroundColor: Colors.transparent dengan elevation: 0.
Properti elevation mengontrol bayangan di bawah AppBar. Nilai 0 menghilangkan bayangan, menciptakan efek panel “datar”, yang relevan untuk Material 3. Nilai 4 memberikan bayangan standar Material Design. Untuk kontrol bayangan khusus, gunakan shadowColor — warna bayangan yang memisahkan panel secara visual dari konten.
Untuk mengontrol warna teks di AppBar, gunakan foregroundColor. Properti ini memengaruhi warna judul, ikon, dan teks di actions. Saat backgroundColor diubah, foregroundColor kontras secara otomatis dipilih, tetapi dapat diatur secara paksa untuk desain non-standar.
SliverAppBar — adalah perpanjangan dari AppBar untuk digunakan di dalam CustomScrollView, yang mendukung animasi saat scroll: menciut (collapsing), efek paralaks, dan menyemat (pinned). Berbeda dengan AppBar standar, SliverAppBar adalah widget sliver dan dapat mengubah ukuran secara dinamis tergantung pada posisi scroll.
Mode utama SliverAppBar ditentukan oleh kombinasi properti pinned, floating, dan snap. Dalam mode pinned, panel selalu terlihat di bagian atas layar. Dalam mode floating, muncul saat scroll ke belakang. Kombinasi floating + snap menciptakan perilaku panel “lekat” yang muncul dengan scroll ke atas sekecil apa pun, sering digunakan di feed berita.
Menurut Flutter API SliverAppBar (2026), untuk menggunakan SliverAppBar, Anda perlu mengganti ListView atau Column biasa dengan CustomScrollView dengan widget sliver. Scaffold tetap berfungsi dengan benar, tetapi properti appBar Scaffold harus null — SliverAppBar ditempatkan di dalam CustomScrollView sebagai sliver pertama.
Mari kita lihat contoh AppBar dengan pencarian, menu dropdown, dan TabBar. Kode ini menunjukkan konfigurasi tipikal panel atas di aplikasi Flutter produksi.
Scaffold(
appBar: AppBar(
title: const Text('Katalog'),
centerTitle: true,
leading: IconButton(
icon: const Icon(Icons.menu),
onPressed: () => Scaffold.of(context).openDrawer(),
),
actions: [
IconButton(
icon: const Icon(Icons.search),
onPressed: () => showSearch(context: context, delegate: ProductSearch()),
),
PopupMenuButton<String>(
onSelected: (String value) {},
itemBuilder: (context) => [
const PopupMenuItem(value: 'settings', child: Text('Pengaturan')),
const PopupMenuItem(value: 'about', child: Text('Tentang Aplikasi')),
],
),
],
bottom: const TabBar(
tabs: [
Tab(text: 'All'),
Tab(text: 'New'),
Tab(text: 'Popular'),
],
),
),
body: const TabBarView(
children: [
AllProductsPage(),
NewProductsPage(),
PopularProductsPage(),
],
),
)
Dalam contoh, AppBar berisi judul terpusat, tombol pembuka Drawer di kiri, ikon pencarian, dan menu dropdown di kanan. TabBar di bottom memungkinkan perpindahan antar kategori produk. Konfigurasi ini mencakup sebagian besar skenario aplikasi seluler: navigasi, pencarian, opsi tambahan, dan perpindahan antar bagian — semuanya dalam satu panel atas.
Pertanyaan yang sering diajukan
Tinggi AppBar tetap (56dp) dan tidak dapat diubah secara langsung. Untuk tinggi khusus, gunakan PreferredSize, bungkus widget khusus dengan tinggi yang diinginkan di dalamnya. Alternatifnya, gunakan SliverAppBar dengan collapsedHeight untuk pengelolaan ukuran yang fleksibel dalam keadaan diciutkan tanpa kehilangan fungsionalitas panel standar.
Atur properti elevation: 0 di konstruktor AppBar. Ini akan menghilangkan bayangan dan membuat panel terlihat datar, sesuai dengan gaya Material 3. Untuk kontrol penuh, gunakan shadowColor: Colors.transparent untuk mengganti warna bayangan tanpa mengubah elevation, jika Anda perlu mempertahankan koordinat z.
AppBar — panel statis dengan tinggi tetap yang ditempatkan di Scaffold.appBar. SliverAppBar — versi dinamis yang digunakan di dalam CustomScrollView, yang dapat menciut, menyemat, dan dianimasikan saat scroll. SliverAppBar menyediakan properti collapsedHeight, expandedHeight, pinned, dan floating untuk pengelolaan perilaku scroll yang fleksibel.
Tambahkan IconButton dengan ikon pencarian ke daftar actions. Saat ditekan, Anda dapat memanggil showSearch dengan SearchDelegate khusus yang akan membuka layar pencarian dengan animasi otomatis. Alternatifnya — ganti title dengan TextField, mengubah AppBar menjadi bilah pencarian di tempat, yang nyaman untuk katalog dan daftar.
Secara default, centerTitle adalah null dan perilaku tergantung pada platform: di Android judul rata kiri, di iOS — di tengah. Atur centerTitle: true secara eksplisit untuk pemusatan paksa di kedua platform. Jika judul tidak terpusat karena leading, periksa apakah leading tidak null — keberadaannya menggeser judul ke kanan.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga