CodeBlanks Logo Icon CodeBlanks

Tekrar kullanılabilirlik

Aynı widget'ı birden çok ekranda kullanmayı öğrenirsin.

Tekrar kullanılabilirlik

Bir özel widget'ı bir kez yazıp birçok ekranda kullanabilirsin. Aynı Baslik sınıfı hem AnaEkran'da hem ProfilEkran'da kullanılabilir; bu, kod tekrarını önler ve tutarlılık sağlar. Widget'ı ayrı bir dosyaya koyup import ile çekerek tüm projede paylaşabilirsin.

class Baslik extends StatelessWidget {
  final String yazi;
  const Baslik({super.key, required this.yazi});

  @override
  Widget build(BuildContext context) => Text(yazi);
}

class AnaEkran extends StatelessWidget {
  const AnaEkran({super.key});
  @override
  Widget build(BuildContext context) => Baslik(yazi: 'Ana');
}

Ayrı dosyada widget tanımlama

Bir widget'ı kendi dosyasına koyduktan sonra, kullanacağın dosyanın başına import 'dosya_yolu.dart'; yazarsın. Dart, dosya adını bir kütüphane adı gibi ele alır. Böylece proje boyunca aynı widget sınıfına erişirsin.

// widgets/baslik.dart
class Baslik extends StatelessWidget {
  // ...
}

// ekrana_ekran.dart
import 'widgets/baslik.dart';

class AnaEkran extends StatelessWidget {
  // Baslik burada kullanılabilir
}

Uygulama Baslik widget'ını yeniden kullan

Baslik adında StatelessWidget tanımla: final String yazi alanı required olsun ve build metodu Text(yazi) döndürsün. Sonra AnaEkran adında başka bir StatelessWidget tanımla; build metodu Baslik(yazi: 'Ana') döndürsün. main içinde 'hazir' yazdır.

Başlangıç kodu

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

// Baslik StatelessWidget tanımla
// final String yazi (required)
// build Text(yazi) döndürsün

// AnaEkran StatelessWidget tanımla
// AnaEkran build metodu Baslik widget'ını kullansın

void main() {
  // 'hazir' yazdır
}

Örnek çözüm

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

class Baslik extends StatelessWidget {
  final String yazi;
  const Baslik({super.key, required this.yazi});

  @override
  Widget build(BuildContext context) {
    return Text(yazi);
  }
}

class AnaEkran extends StatelessWidget {
  const AnaEkran({super.key});

  @override
  Widget build(BuildContext context) {
    return Baslik(yazi: 'Ana');
  }
}

void main() {
  print('hazir');
}

Beklenen çıktı

hazir

Soru ve cevaplar

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

1 Bir widget'ı başka dosyada kullanmak için ne yapılır?

  • http.get çağrısı yapmak
  • jsonDecode yapmak
  • Widget'ı yeniden yazmak
  • import ile dosyayı çekmek Doğru cevap

Açıklama: Ayrı dosyadaki bir widget'ı kullanmak için import ile dosyayı içe aktarırsın. Yeniden yazmak tekrara yol açar, http.get ağ isteğidir, jsonDecode JSON çözmek içindir; bunlar dosya paylaşımıyla ilgili değildir.

2 Dosyayı içe aktar

Soru
// ana_ekran.dart
____

class AnaEkran extends StatelessWidget {
  // Baslik burada kullanılır
}
Cevap
// ana_ekran.dart
import 'widgets/baslik.dart'

class AnaEkran extends StatelessWidget {
  // Baslik burada kullanılır
}

Açıklama: Dart'ta bir dosyayı içe aktarmak için import kullanılır. export başka kütüphanelere aktarma içindir, require ve include Dart anahtar kelimeleri değildir.

3 Tekrar kullanılabilirlik parçaları

Kavram Anlamı
import dosyayı içe aktarma
ayrı dosya widget'ın kütüphanesi
aynı sınıf birden çok ekranda kullanım
kod tekrarı önlünen sorun

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