CodeBlanks Logo Icon CodeBlanks

Özet - Build sistemi

build_runner, Builder ve source_gen'i birleştirerek bir kod üreteci yazarsın.

Özet - Build sistemi

Bu grupta Dart build sistemini öğrendik: build_runner (çalıştırıcı), Builder (üretici arayüzü), source_gen (annotation tabanlı üretim), analyzer (AST çözümleme), custom_lint (özel denetim).

Temel: build_runner, Builder sınıflarını çalıştırır ve .g.dart üretir. source_gen, annotation'larla bu süreci otomatikleştirir. analyzer, kaynak kodu AST'ye çevirir.

Bu araçlar birlikte çalışır: analyzer çözümler, source_gen üretir, Builder sarar, build_runner çalıştırır. custom_lint ise ayrı bir denetim katmanı ekler.

Uygulama Özet: config + builder + lint

Bir BuildConfig sınıfı tanımla: final String outputExtension; BuildConfig(this.outputExtension);. Bir Builder sınıfı tanımla: String build(String input) => '// generated from $input';. Bir LintRule sınıfı tanımla: final String name; LintRule(this.name); void report() => print('lint: $name');. main içinde üçünden de bir örnek yarat; config.outputExtension, builder.build('user.dart') ve rule.report() ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // BuildConfig, Builder ve LintRule sınıflarını tanımla
  // her birinden bir örnek yarat; çıkış uzantısı, üretilen kod ve lint uyarısı yazdır
}

Örnek çözüm

main.dart
class BuildConfig {
  final String outputExtension;
  BuildConfig(this.outputExtension);
}

class Builder {
  String build(String input) => '// generated from $input';
}

class LintRule {
  final String name;
  LintRule(this.name);
  void report() => print('lint: $name');
}

void main() {
  final config = BuildConfig('.g.dart');
  final builder = Builder();
  final rule = LintRule('avoid_print');
  print(config.outputExtension);
  print(builder.build('user.dart'));
  rule.report();
}

Beklenen çıktı

.g.dart
// generated from user.dart
lint: avoid_print

Soru ve cevaplar

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

1 Hangi araç .g.dart dosyalarını üretir?

  • pub publish
  • dartfmt
  • build_runner Doğru cevap
  • dart analyze

Açıklama: build_runner Builder'ları çalıştırıp .g.dart üretir.

2 Araçları eşleştir

Kavram Anlamı
build_runner Çalıştırıcı
Builder Üretici
source_gen Kaynak üretimi
analyzer AST çözümleyici
custom_lint Madde motoru

3 Üretilen dosya uzantısı

Soru
part 'user____';
Cevap
part 'user.g.dart';

Açıklama: .g.dart üretilen dosyayı işaretler.

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