Bileşen kütüphanesi
- Flutter kursu
- Uzman seviye
- Ders 33/39
- 4 dk
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
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
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
class AppCard extends StatelessWidget {
final Widget child;
const AppCard({super.key, ____});
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 |