CodeBlanks Logo Icon CodeBlanks

Bileşen kütüphanesi

Yeniden kullanılabilir bileşen kütüphanesi yapmayı öğrenirsin.

Bileşen kütüphanesi nedir?

Bileşen kütüphanesi, yeniden kullanılabilir widget'lar topluluğudur. Buton, kart, input gibi sıklıkla kullanılan yapıları tek pakette toplar. Tasarım sisteminin uygulama tarafıdır ve tutarlı görünüm sağlar.

class PrimaryButton extends StatelessWidget {
  final String label;
  final VoidCallback onPressed;
  const PrimaryButton({
    super.key,
    required this.label,
    required this.onPressed,
  });

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(label),
    );
  }
}

Parametrelerle esneklik

Bileşenler parametrelerle esnek olur. Ancak tüm olasılıkları açmak yerine, en sık kullanılan varyasyonları parametre olarak açarsın. Varsayılan değerler vererek kullanımı basitleştirirsin.

class AppCard extends StatelessWidget {
  final Widget child;
  final EdgeInsets? padding;
  final Color? color;
  const AppCard({
    super.key,
    required this.child,
    this.padding,
    this.color,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: padding ?? const EdgeInsets.all(16),
      decoration: BoxDecoration(
        color: color,
        borderRadius: BorderRadius.circular(8),
      ),
      child: child,
    );
  }
}

Uygulama Özel buton bileşeni yaz

AppButton adında StatelessWidget yaz. label (String) ve onPressed (VoidCallback) parametreleri olsun, ikisi de zorunlu. build metodu ElevatedButton döndürsün ve child olarak Text(label) göstersin. main içinde bir AppButton oluştur ve label'ı yazdır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

// AppButton: StatelessWidget tabanlı
// label (String) ve onPressed (VoidCallback) parametreleri
// build: ElevatedButton döndürür, child olarak metin göster

void main() {
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

class AppButton extends StatelessWidget {
  final String label;
  final VoidCallback onPressed;
  const AppButton({
    super.key,
    required this.label,
    required this.onPressed,
  });

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed,
      child: Text(label),
    );
  }
}

void main() {
  final btn = AppButton(
    label: 'Kaydet',
    onPressed: () {},
  );
  print(btn.label);
}

Beklenen çıktı

Kaydet

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bileşen kütüphanesinin temel faydası nedir?

  • Uygulama boyutunu küçültmek
  • Tutarlılık sağlamak ve kod tekrarını azaltmak Doğru cevap
  • Ağ isteklerini hızlandırmak
  • Derleme süresini sıfırlamak

Açıklama: Bileşen kütüphanesi, tekrarlanan UI yapılarını tek yerde toplar; böylece hem tutarlı görünüm hem de daha az kod tekrarı sağlanır.

2 Required parametre

Soru
class AppCard extends StatelessWidget {
  final Widget child;
  const AppCard({super.key, ____});
Cevap
class AppCard extends StatelessWidget {
  final Widget child;
  const AppCard({super.key, required this.child});

Açıklama: child null olamaz; bu yüzden required this.child ile zorunlu hale getirirsin.

3 Bileşen parçaları

Kavram Anlamı
StatelessWidget Durumsuz bileşen tabanı
required Zorunlu parametre işareti
super.key Anahtarı ebeveyne aktarır
VoidCallback Tıklama callback tipi

Uzman seviye bölümündeki tüm dersler