CodeBlanks Logo Icon CodeBlanks

onPressed ve child

onPressed callback ve child içeriğinin rollerini öğrenirsin.

onPressed ve child rolleri

onPressed, butona basıldığında çağrılacak callback fonksiyonudur. child ise butonun içinde gösterilen widget'tır ve çoğunlukla bir Text olur. Eğer onPressed değerini null verirsen buton devre dışı kalır; gri görünür ve basılamaz.

ElevatedButton(
  onPressed: null,
  child: Text('Pasif'),
)

child farklı widget'lar olabilir

child genellikle bir Text widget'ıdır, ama başka widget'lar da verebilirsin. Örneğin bir Row içine ikon ve metin koyarak ikonlu buton yapabilirsin. child butonun boyutunu ve içeriğini belirler.

ElevatedButton(
  onPressed: () {},
  child: Row(
    mainAxisSize: MainAxisSize.min,
    children: [Icon(Icons.save), Text('Kaydet')],
  ),
)

Uygulama ElevatedButton ile iptal butonu yap

iptal adında bir fonksiyon yaz; çağrılınca Iptal yazdırsın. main içinde iptal'i çağır. Bir ElevatedButton ekle; onPressed'i iptal'e, child'ı Text('Iptal') olarak bağla.

Başlangıç kodu

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

// iptal fonksiyonu yaz: "Iptal" yazdirsin

void main() {
  // iptal'i cagir
  runApp(const Uygulama());
}

class Uygulama extends StatelessWidget {
  const Uygulama({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          // ElevatedButton ekle: onPressed ve child ver
          child: SizedBox(),
        ),
      ),
    );
  }
}

Örnek çözüm

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

void iptal() {
  print('Iptal');
}

void main() {
  iptal();
  runApp(const Uygulama());
}

class Uygulama extends StatelessWidget {
  const Uygulama({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: ElevatedButton(
            onPressed: iptal,
            child: Text('Iptal'),
          ),
        ),
      ),
    );
  }
}

Beklenen çıktı

Iptal

Soru ve cevaplar

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

1 onPressed parametresine null verilirse ne olur?

  • Buton devre dışı kalır ve basılamaz Doğru cevap
  • onPressed otomatik olarak boş bir fonksiyon atanır
  • Uygulama çöker
  • child silinir

Açıklama: onPressed null ise ElevatedButton devre dışı kalır; gri görünür ve basıldığında hiçbir callback çağrılmaz.

2 child parametresini ekle

Soru
ElevatedButton(
  onPressed: () {},
  ____: Text('Tamam'),
)
Cevap
ElevatedButton(
  onPressed: () {},
  child: Text('Tamam'),
)

Açıklama: ElevatedButton içeriğini child parametresi belirler; children, title veya subtitle geçerli parametreler değildir.

3 onPressed ve child

Kavram Anlamı
onPressed Basınca çağrılan callback
child Buton içinde gösterilen widget
null Butonu devre dışı bırakır
Text child için yaygın seçim

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