Builder
- Dart kursu
- Uzman
- Ders 26/47
- 5 dk
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
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
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
Future<void> ____(BuildStep step) async {
// kaynak oku, çıkış yaz
}
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ü |