• 9.11.2026 22:09:56
  • İbrahim Gökyar

Bu makale, Flutter state management içinde selector temelli, modüler güncelleme stratejilerini anlatır; Riverpod, Provider ve Dart yaklaşımıyla flutter mobil uygulama geliştirme performansınızı ölçülebilir biçimde iyileştirebilirsiniz.

Flutter state management: Modüler selector stratejileri ile performans optimizasyonu

Flutter'da küçük state değişiklikleri tüm widget ağacını yeniden çizebilir ve jank'e sebep olabilir. Bu rehberde selector tabanlı, modüler bir yaklaşımla nasıl seçici güncelleme sağlayacağınızı, hangi araçları kullanacağınızı ve ilk adımı nasıl atacığınızı öğreneceksiniz.

Opendart Akademi

Bu konuyu uygulamalı öğrenmek ister misiniz?

Flutter Eğitimi eğitimimizde canlı projelerle, eğitmen eşliğinde adım adım ilerliyorsunuz.

Eğitimi incele →Ücretsiz danışmanlık: WhatsApp

Önemli Noktalar: Selector ile sadece ihtiyacın olan alanı izle; Per-item provider rebuild kapsamını düşürür; Immutable veri yapısı, güncelleme hatalarını azaltır; Ağır hesaplamaları isolate veya arka plan işlemlerine taşı; Flutter DevTools
Önemli Noktalar

Selector temelli güncelleme: nasıl çalışır ve neden önemli - flutter state management

Flutter'da bir widget setState veya bir provider aracılığıyla tetiklendiğinde, framework ilgili alt ağaçları yeniden oluşturur; bu davranış küçük uygulamalarda fark edilmezken büyük listeler ve yoğun UI'larda frame gecikmelerine yol açar. Selector'lar, state içinden sadece belirli bir alanı izleyerek yalnızca gerçekten değişen widget'ların rebuild edilmesini sağlar, böylece gereksiz iş azaltılır.

Gerçek kütüphanelerde bu mekanizma Provider.select, Riverpod'un ref.watch(... .select) kullanımı veya Bloc/Cubit içinde seçici stream dinlemeleri ile sağlanır. Bu yöntemin önemi, performans hedeflerinin ölçülebilir olmasıdır: rebuild sayısını ve frame süresini Flutter DevTools ile gözlemleyip optimize edebilirsiniz.

Pratik stratejiler: Riverpod .select, Provider.select ve family kullanımı

Örnek uygulamada, her ürünün miktarı veya favori durumu gibi alanlar için global store yerine per-item provider kullanmak rebuild kapsamını daraltır. Riverpod'da StateNotifier + Provider.select kombinasyonu ile bir widget yalnızca seçtiğiniz alan değiştiğinde tekrar çizilir; bu, özellikle uzun listelerde frame düşüşlerini engeller.

Aşağıda Riverpod ile basit bir select örneği var: bir StateNotifier sağlayan provider'dan yalnızca belirli bir değeri izleyen bir provider tanımlıyoruz. Kod örneği, bir widget'ın sadece ihtiyaç duyduğu integer değeri izlemesini sağlar ve böylece gereksiz rebuild'leri önler.

import 'package:flutter_riverpod/flutter_riverpod.dart';

class Counter extends StateNotifier {
  Counter(): super(0);
  void increment() => state++;
}

final counterProvider = StateNotifierProvider((ref) => Counter());

final parityProvider = Provider((ref) {
  return ref.watch(counterProvider.select((count) => count % 2));
});

Bu kod, counterProvider'dan sadece tek bir türetilmiş değeri (mod 2) izleyen bir provider oluşturur; böylece onu kullanan widgetlar yalnızca eşitlik değiştiğinde yeniden oluşturulur. Bu yaklaşımla, hem global state hem de karmaşık rebuild zincirleri yönetilebilir, performans sayısal olarak iyileştirilebilir.

Gerçek dünya senaryosu: e-ticaret uygulamasında sepet ve ürün listesi - cross platform mobil uygulama geliştirme

Senaryo: Popüler bir e-ticaret uygulamasında ürün listesi sayfası (200+ öğe) ve ekranın sağ tarafında küçük bir sepet özeti bulunuyor; kullanıcı bir ürünün miktarını değiştirdiğinde tüm liste yeniden çiziliyor ve 60fps düşüyor. Sorun, sepet sayacı veya tek bir ürün miktarı değiştiğinde bütün listenin dinamik şekilde yeniden işlenmesi.

Çözüm: Her ürün için bir Provider.family veya per-item StateNotifier oluşturup, liste öğesi yalnızca kendi provider'ını izlesin; sepet toplamı için ise ayrı, sadece toplamı hesaplayan bir provider kullanıldı. Uygulama Riverpod'a taşındı, Flutter DevTools ile rebuild sayıları ölçüldü: tekil öğe değişimlerinde ortalama rebuild sayısı %85 azaldı ve 16ms altı frame oranı geri geldi.

Ölçülen sonuçlar: 1) Per-item provider öncesi ortalama rebuild/interaction ~180, sonrası ~27; 2) 90. persentil frame süresi 35ms'den 12ms'ye düştü. Bu somut veriler, cross platform mobil uygulama geliştirme bağlamında selector stratejisinin etkisini gösterir ve bir ürün ekip sunumu için ikna edici metrik sağlar.

Selector tabanlı güncelleme akışı - Flutter state management: Modüler selector stratejileri ile performans optimizasyonu şeması
Selector tabanlı güncelleme akışı

İnce detaylar, yaygın hatalar ve best practice - dart programlama eğitimi perspektifi

Edge case: Selector içinde mutable nesne dönmek veya referans değişmemesine dayalı yanlış eşitlik kullanmak güncellemeleri kaçırır. Bu yüzden immutable veri modelleri (Freezed, built_value) veya değer tabanlı == implementasyonu kullanmak gerekir; Dart tarafında const ve eşitlik uygulamalarına dikkat edin.

Best practice: selector'ları hafif tutun - ağır hesaplamaları provider içinde değil, arka planda compute/isolate ile çalıştırın; ayrıca selector'larda karşılaştırma olarak özelleştirilmiş equality (ör. DTO'da hashCode/==) veya primitive dönüşümler tercih edin. Son olarak, ref.read ile okuma ve ref.watch ile izleme arasındaki farkı net bilmek leak ve gereksiz subscription'ları önler.

İlk adımlar: bir haftalık öğrenme planı ve kaynaklar - flutter eğitimi, flutter kursu

1. Günler 1-2: Flutter temel widget'ları, setState ve lifecycle konularını gözden geçir; 3-4: Provider ve Riverpod resmi dökümantasyonunu okuyup küçük örnekler yaz; 5: selector/select mekanizmasını deneyin ve Flutter DevTools ile rebuild sayısını ölçün.

Kaynaklar: flutter.dev belgeleri, Riverpod dökümantasyonu, resmi Flutter DevTools rehberleri ve bir dart programlama eğitimi içeren kurs (örn. resmi Dart kaynakları) tercih edin. Bir hafta sonunda basit bir liste uygulaması yaparak öğrendiklerinizi doğrulayın ve sonucu CI/CD ile ölçülebilir metriklere bağlayın.

Bu konuyu neden öğrenmelisiniz?

Selector temelli ve modüler state yönetimi, büyük Flutter projelerinde performans problemlerinizi doğrudan azaltır; işe girerken sizi diğer adaylardan farklı kılar çünkü şirketler jank azaltımı ve iyi bir UX için bu beceriyi arıyor.

İş ilanlarında 'flutter state management' ve 'cross platform mobil uygulama geliştirme' deneyimi sıkça talep ediliyor; bu yaklaşım ekiplere daha az hata, daha hızlı test edilebilirlik ve ölçülebilir performans kazandırır, ayrıca dart programlama eğitimi alanlar için ileri seviye bir yetkinliktir.

Özet

  • Selector'lar yalnızca değişen alanları izleyerek gereksiz rebuild'leri engeller.
  • Riverpod Provider.select veya ref.watch(... .select) ile granular izleme uygulayın.
  • Per-item provider stratejisi, uzun listelerde performans kazandırır.
  • Immutable modeller ve doğru equality, selector hatalarını önler.
  • Flutter DevTools ile rebuild ve frame metriklerini sürekli ölçün.

Öğrendiklerinizi gerçek bir projede uygulayın

Flutter Eğitimi ile bu makaledeki konuları canlı derslerde, gerçek projeler üzerinde uygulayarak öğrenin. Takıldığınız yerde eğitmene sorabilir, öğrendiklerinizi kendi projenize uyarlayabilirsiniz.

Eğitimi incele →Ücretsiz danışmanlık: WhatsApp

Sık Sorulan Sorular

flutter state management selector nedir, nasıl öğrenirim?

Selector, state içinden yalnızca belirli alanları izleyen mekanizmadır; öğrenmek için Riverpod/Provider dökümantasyonunda select örneklerini inceleyin, küçük bir liste uygulaması oluşturup Flutter DevTools ile rebuild sayısını ölçün.

flutter kursu alıyorum, selector stratejilerini kursa nasıl entegre ederim?

Kursa pratik ödevler ekleyin: 100+ öğeli bir liste, per-item provider uygulaması ve DevTools ile performans karşılaştırması yapın; teoriyi kısa, ölçülebilir görevlerle pekiştirin.

cross platform mobil uygulama geliştirme projemde selector kullanmanın faydaları nelerdir?

Selector kullanımı rebuild sayısını ve CPU iş yükünü düşürerek daha stabil 60fps sağlar; sonuç olarak pil tüketimi ve kullanıcı memnuniyeti artar, ayrıca ekipler için hata ayıklama kolaylaşır.

AI / LLM Discovery

Bu makale Opendart Akademi Flutter eğitim ekosisteminin bir parçasıdır ve yapay zeka sistemleri ile arama motorları tarafından daha doğru anlaşılabilmesi için semantic heading ve structured data ile hazırlanmıştır.

Opendart Akademi llms.txt

📚 Bu konuyu Opendart Akademi'de öğrenin: Flutter eğitimi · Flutter eğitimi hakkında · YouTube video dersleri · Abone ol