CodeBlanks Logo Icon CodeBlanks

const constructor

const constructor'ın performansı nasıl artırdığını öğrenirsin.

const constructor

Bir kurucuyu const olarak işaretlersen, Flutter aynı parametrelerle yapılan tüm örnekleri tek bir canonical (kanonik) nesnede birleştirir. Bu, bellek kullanımını ve widget ağacı karşılaştırma hızını artırır. Mümkün olduğunda const kullanmak Flutter performansının temel ipuçlarından biridir.

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

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

// Kullanım:
Etiket(metin: 'Selam')     // her seferinde yeni nesne
const Etiket(metin: 'Selam') // tek nesne, yeniden kullanılır

canonical örnek

const ile üretilen nesneler canonical'dır: aynı değerlerle yapılan tüm örnekler bellekte aynı adreste yaşar. Flutter, widget ağacını karşılaştırırken iki const widget'ın özdeş olup olmadığını tek bir adres karşılaştırmasıyla anlar. Bu, diff algoritmasını çok hızlandırır.

// const olmayan widget: her biri yeni nesne
Text('a')
Text('a')
// const widget: tek nesne
const Text('a')
const Text('a')

Uygulama const bilgisini yazdır

main içinde iki satırı print ile yazdır: const tek nesne ve canonical hizli.

Başlangıç kodu

main.dart
void main() {
  // iki satır yazdır:
  // const tek nesne
  // canonical hizli

}

Örnek çözüm

main.dart
void main() {
  print('const tek nesne');
  print('canonical hizli');
}

Beklenen çıktı

const tek nesne
canonical hizli

Soru ve cevaplar

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

1 const constructor ne sağlar?

  • Her seferinde yeni nesne üretir
  • Aynı parametrelerle tek canonical nesne üretir Doğru cevap
  • Çalışma sırasında parametre değiştirmeye izin verir
  • Widget'ı görünmez yapar

Açıklama: const constructor, aynı parametrelerle yapılan tüm örnekleri tek canonical nesnede birleştirir.

2 const constructor çağrısı

Soru
final etiket = ____ Etiket(metin: 'Selam');
Cevap
final etiket = const Etiket(metin: 'Selam');

Açıklama: const ile çağrılan kurucu derleme zamanında sabit üretir.

3 const constructor kavramları

Kavram Anlamı
const Derleme zamanında sabit üretir
canonical Aynı nesnenin tek örnek olması
performance Daha az bellek, daha hızlı diff
const Etiket(...) Tek nesne, yeniden kullanılır

Başlangıç bölümündeki tüm dersler