CodeBlanks Logo Icon CodeBlanks

Widget tree

Widget ağacının nasıl oluştuğunu ve güncellendiğini öğrenirsin.

Widget tree

widget_tree, Flutter'da widget'ların iç içe dizilimiyle oluşan soyut ağaçtır. Her widget immutable'dır, yani değiştirilemez; state değişince yeni bir widget nesnesi oluşturulur ve ağaç rebuild edilir.

MaterialApp(
  home: Scaffold(
    body: Center(
      child: Text('Merhaba'),
    ),
  ),
)

Rebuild süreci

rebuild, build metodunun yeniden çağrılmasıdır. State değiştiğinde ilgili widget ve alt widget'ları build ile yeniden oluşturulur. Her rebuild yeni widget nesneleri üretir ama eski Element ağacı korunarak verimli güncelleme yapılır.

Uygulama Widget ağacı oluştur

main içinde bir MaterialApp widget'ı oluştur: home Scaffold, body Center, child Text('Merhaba'). Widget'ın runtimeType'ını yazdır.

Başlangıç kodu

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

void main() {
  // MaterialApp, Scaffold, Center ve Merhaba metnini iç içe oluştur
  // runtimeType yazdır
}

Örnek çözüm

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

void main() {
  final widget = MaterialApp(
    home: Scaffold(
      body: Center(
        child: const Text('Merhaba'),
      ),
    ),
  );
  print(widget.runtimeType);
}

Beklenen çıktı

MaterialApp

Soru ve cevaplar

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

1 Bir widget'ın state'i değiştiğinde ne olur?

  • Uygulama çöker
  • Hiçbir şey olmaz
  • Yeni bir widget nesnesi oluşturulur ve ağaç rebuild edilir Doğru cevap
  • Widget nesnesi değiştirilir

Açıklama: Widget'lar immutable olduğu için state değiştiğinde widget nesnesi güncellenemez; yenisi oluşturulur ve build metodu yeniden çağrılır.

2 Widget ağacına Center ekle

Soru
MaterialApp(
  home: Scaffold(
    body: ____(child: Text('Merhaba')),
  ),
)
Cevap
MaterialApp(
  home: Scaffold(
    body: Center(child: Text('Merhaba')),
  ),
)

Açıklama: Center, çocuğunu ortalar; widget ağacında Scaffold body'sinin çocuğu olarak kullanılır.

3 Widget tree eşleşmeleri

Kavram Anlamı
widget_tree Widget iç içe dizilimi
immutable Değiştirilemez
rebuild build'i yeniden çağırır
build Widget döndürür

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