Sobes.tech
Middle

Flutter'da widget denetleyicileri ne için kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Flutter'da widget denetleyicileri, belirli bir widget'in durumunu veya davranışını dışarıdan yönetmek ve onunla etkileşim kurmak için kullanılır.

Kullanım amaçları:

  • Programatik yönetim: Kullanıcıyla doğrudan etkileşim olmadan widget özelliklerini değiştirme (örneğin, liste kaydırma, metin alanında imleç kontrolü).
  • Bilgi alma: Widget'in mevcut durumunu okuma (örneğin, mevcut kaydırma konumu, girilen metin).
  • Olaylara yanıt verme: Uygulamanın diğer bölümlerindeki olaylara yanıt olarak widget ile ilgili işlemler yapma.

Popüler denetleyici örnekleri:

  • TextEditingController: Metin alanlarının yönetimi (TextField, TextFormField). Metni alma ve ayarlama, seçim ve imleç konumunu yönetme imkanı sağlar.
    final myController = TextEditingController();
    
    // Alanın içeriğini alma
    final text = myController.text;
    
    // Alana yeni metin ayarlama
    myController.text = 'Yeni metin';
    
  • ScrollController: Kaydırılabilir widget'ların yönetimi (ListView, GridView, SingleChildScrollView). Programlı kaydırma, mevcut kaydırma konumunu alma ve kaydırma olaylarını dinleme imkanı sağlar.
    final myScrollController = ScrollController();
    
    // Başa kaydır
    myScrollController.animateTo(
      0,
      duration: Duration(milliseconds: 500),
      curve: Curves.easeOut,
    );
    
    // Mevcut kaydırma konumunu alma
    final position = myScrollController.position.pixels;
    
  • PageController: Sayfa widget'larının yönetimi (PageView). Sayfalar arasında geçiş yapma, mevcut sayfayı alma ve sayfa değişikliklerini dinleme.
    final myPageController = PageController();
    
    // Bir sonraki sayfaya geç
    myPageController.nextPage(
      duration: Duration(milliseconds: 300),
      curve: Curves.easeIn,
    );
    
    // Mevcut sayfayı alma
    final currentPage = myPageController.page;
    

Kontrolörler genellikle ilgili widget'ın yapıcısı aracılığıyla iletilir. Kontrolörün yaşam döngüsü (oluşturma ve silme) kullanıldığı widget'ta, genellikle initState metodunda oluşturulmalı ve dispose metodunda serbest bırakılmalıdır.

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  late final TextEditingController _textController;

  @override
  void initState() {
    super.initState();
    _textController = TextEditingController();
  }

  @override
  void dispose() {
    _textController.dispose(); // Kaynakları serbest bırakmak önemli
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return TextField(
      controller: _textController,
      // ... diğer TextField özellikleri
    );
  }
}

Kontrolörlerin kullanımı, widget'ın yönetim mantığını görünümünden ayırmaya olanak tanır.