CodeBlanks Logo Icon CodeBlanks

Builder

Builder ile kod üreteci öğrenirsin.

Builder

Builder, build_runner'ın çalıştırdığı kod üreteci arayüzüdür. build(BuildStep) metodu kaynak dosyaları okur ve üretilen dosyaları yazar.

Bir Builder şunları bildirir: buildExtensions (giriş → çıkış eşlemesi, örn. '.dart' → '.g.dart') ve build metodunun kendisi.

BuildStep bağlamı dosya okuma/yazma, bağımlılık çözme ve günlükleme sağlar. Builder'lar durumsuzdur (stateless); her derlemede yeniden oluşturulur.

buildExtensions eşlemesi

buildExtensions, giriş uzantısından çıkış uzantısına eşleme yapar: {'.dart': '.g.dart'}. build_runner bu eşlemeye göre hangi dosyaların üretileceğini bilir.

Bir Builder birden çok çıkış üretebilir: {'.dart': ['.g.dart', '.freezed.dart']}. Her çıkış ayrı bir dosyadır.

Builder yazarken önce buildExtensions'ı, sonra build metodunu tanımlarsın. Bu ikisi bir arada üretim sözleşmesini oluşturur.

Uygulama Builder iskeleti tanımla

Bir Builder sınıfı tanımla: String get outputExtension => '.g.dart'; ve String build(String input) => '// generated from $input'; metotları olsun. main içinde final builder = Builder(); yarat; builder.outputExtension ve builder.build('user.dart') yazdır.

Başlangıç kodu

main.dart
void main() {
  // Builder sınıfını tanımla (outputExtension getter, build metodu)
  // bir Builder yarat; outputExtension ve build('user.dart') yazdır
}

Örnek çözüm

main.dart
class Builder {
  String get outputExtension => '.g.dart';
  String build(String input) => '// generated from $input';
}

void main() {
  final builder = Builder();
  print(builder.outputExtension);
  print(builder.build('user.dart'));
}

Beklenen çıktı

.g.dart
// generated from user.dart

Soru ve cevaplar

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

1 build metodu

Soru
Future<void> ____(BuildStep step) async {
  // kaynak oku, çıkış yaz
}
Cevap
Future<void> build(BuildStep step) async {
  // kaynak oku, çıkış yaz
}

Açıklama: build(BuildStep) metodu üretim yapar.

2 Builder hangi metodu uygular?

  • compile(Library)
  • generate(String)
  • build(BuildStep) Doğru cevap
  • run(Builder)

Açıklama: Builder build(BuildStep) metodunu uygular.

3 Builder parçalarını eşleştir

Kavram Anlamı
build(BuildStep) Üretim metodu
BuildStep Giriş bağlamı
buildExtensions Uzantı eşlemesi
Future<void> Dönüş türü

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