Ahmet Balaman LogoAhmet Balaman

Flutter: AppBar Widget ve Özelleştirme

personAhmet Balaman
calendar_today
FlutterAppBarNavigationWidgetUIMaterial

AppBar, sayfanın en üstünde bulunan ve varsayılan olarak her Scaffold'da gelen bir widget'tır. Başlık, navigasyon butonları ve eylem butonları içerebilir.

Canlı Demo

Aşağıdaki interaktif örnekte bu widget'ı deneyebilirsiniz:

💡 Eğer yukarıdaki örnek açılmazsa, DartPad linkine tıklayarak yeni sekmede çalıştırabilirsiniz.

Temel Kullanım

Scaffold(
  appBar: AppBar(
    title: Text('Sayfa Başlığı'),
  ),
  body: Center(child: Text('İçerik')),
)

Önemli Özellikler

Özellik Açıklama
title Başlık widget'ı
leading Sol taraftaki widget (genellikle geri butonu)
actions Sağ taraftaki butonlar listesi
backgroundColor Arka plan rengi
foregroundColor İkon ve yazı rengi
elevation Gölge miktarı
centerTitle Başlığı ortala
automaticallyImplyLeading Otomatik geri butonu

Actions Kullanımı

AppBar(
  title: Text('Başlık'),
  actions: [
    IconButton(
      icon: Icon(Icons.search),
      onPressed: () {},
    ),
    IconButton(
      icon: Icon(Icons.more_vert),
      onPressed: () {},
    ),
  ],
)

Leading Özelleştirme

AppBar(
  leading: IconButton(
    icon: Icon(Icons.menu),
    onPressed: () {
      // Drawer aç
    },
  ),
  title: Text('Başlık'),
)

Arama Çubuğu Entegrasyonu

AppBar(
  title: TextField(
    decoration: InputDecoration(
      hintText: 'Ara...',
      border: InputBorder.none,
      prefixIcon: Icon(Icons.search),
    ),
  ),
)

Gradient AppBar

AppBar(
  title: Text('Gradient'),
  flexibleSpace: Container(
    decoration: BoxDecoration(
      gradient: LinearGradient(
        colors: [Colors.purple, Colors.blue],
        begin: Alignment.topLeft,
        end: Alignment.bottomRight,
      ),
    ),
  ),
)

SliverAppBar

Kaydırma ile küçülen/büyüyen AppBar:

CustomScrollView(
  slivers: [
    SliverAppBar(
      expandedHeight: 200,
      floating: false,
      pinned: true,
      flexibleSpace: FlexibleSpaceBar(
        title: Text('Başlık'),
        background: Image.network(
          'https://example.com/image.jpg',
          fit: BoxFit.cover,
        ),
      ),
    ),
    SliverList(
      delegate: SliverChildBuilderDelegate(
        (context, index) => ListTile(title: Text('Öğe $index')),
        childCount: 50,
      ),
    ),
  ],
)

Özet

  • AppBar: Sayfa üst çubuğu
  • title: Başlık widget'ı
  • leading: Sol taraf (geri butonu, menü)
  • actions: Sağ taraf butonları
  • SliverAppBar: Kaydırılabilir AppBar

AppBar, uygulamanızın navigasyonunu yönetmek için temel bir bileşendir.

Yorumlar