İçeriğe geç / Skip to content / Zum Inhalt

Flutter Dersleri: Dart Temellerinden Yayına Kadar

Dart dilinin temelleri, widget ağacı, layout, navigasyon, asenkron veri, state management ve animasyonlar. Her ders kısa bir açıklama, çalışan kod ve çoğunda tarayıcıda denenebilen canlı DartPad örneğiyle gelir. Sıfırdan başlıyorsanız yazıları aşağıdaki sırayla okuyabilirsiniz.

57 yazı

Dart Temelleri

  1. Dart'ta Tip Dönüşümleri ve Static DeğişkenlerDart'ta String ve sayı arasında güvenli dönüşüm, int ile double farkı, as ve is kullanımı, static alan ve metotların yeri; sık yapılan hatalarla birlikte.
  2. Dart'ta Enum ve Composition: Kodu Nasıl Düzenleriz?Dart 3'te alan ve metot taşıyan enum'lar, switch ifadeleriyle eksiksiz kontrol ve composition ile has-a ilişkisi; örnekler ve sık yapılan hatalarla.
  3. Dart'ta Kalıtım (Inheritance) ve Polymorphism RehberiDart'ta extends, super ve @override ile kalıtım, polymorphism, abstract sınıflar, güvenli tip kontrolü ve Dart 3'ün sealed, final, base sınıf niteleyicileri.
  4. Dart'ta Interface ve Implements: Sınıflara Ekstra ÖzellikDart'ta implements ile sözleşme kurmak, Dart 3'ün interface class ve abstract interface class yapıları, mixin ile with farkı ve test edilebilir kod örneği.
  5. Dart Collections: List, Set ve Map (HashSet, HashMap)Dart'ta List, Set ve Map ne zaman seçilir; HashSet ve HashMap farkı, eşitlik için hashCode, sıralama, filtreleme ve Flutter'da koleksiyon kullanımı.
  6. Dart'ta Hata Yönetimi: Try-Catch ve Asenkron İşlemlerDart'ta on ile hedefli try-catch, rethrow, kendi exception sınıfları, Future, async/await, zaman aşımı, paralel bekleme ve Flutter'da güvenli setState.

Flutter’a Başlangıç

  1. Flutter ile Mobil Uygulama Geliştirmeye BaşlangıçFlutter'a sıfırdan başlangıç: kurulum, flutter doctor, ilk projeyi oluşturup çalıştırma, proje yapısı, hot reload ve sonrasında izlenecek öğrenme sırası.
  2. Flutter'a Giriş: Widget Ağacı, Row, Column ve Stack YapılarıDart'ı öğrendikten sonra nihayet Flutter'a geçiş yaptım. İlk günümde widget ağacını, Row, Column ve Stack yapılarını öğreniyorum.
  3. Flutter: Kendi Widget'larımızı OluşturmakFlutter'da özel widget yazmak: const constructor ve super.key, zorunlu ve opsiyonel parametreler, widget sınıfı mı yardımcı metod mu, sık yapılan hatalar.
  4. Flutter Yaşam Döngüsü (Life Cycle): StatefulWidget RehberiFlutter'da StatefulWidget yaşam döngüsü metodları ve uygulama yaşam döngüsü yönetimi. initState, dispose, didUpdateWidget ve setState kullanımı.

Layout ve Boyutlandırma

  1. Flutter: Center Widget Detaylı KullanımıCenter'ın Align ile ilişkisi, neden tüm alanı kapladığı, widthFactor, Column ve Row içinde neden ortalamadığı, kaydırılabilir ekranda ortalama ve sık hatalar.
  2. Flutter: Align Widget ile İnce Hizalama İşlemleriAlign ile hassas hizalama: Alignment(x, y) koordinat sistemi, FractionalOffset, widthFactor ve heightFactor, Stack içinde Align mı Positioned mı, hatalar.
  3. Flutter: Padding ile İç Boşluk YönetimiPadding ve EdgeInsets'in tüm kurucuları, EdgeInsetsDirectional ile RTL desteği, SafeArea ve klavye boşlukları, sık yapılan hatalar ve bir form örneği.
  4. Flutter: SizedBox ile Boyutlandırma ve BoşlukSizedBox ile sabit boyut ve boşluk: expand, shrink, square kurucuları, Container farkı, verdiğiniz boyutun neden yok sayıldığı ve sık yapılan hatalar.
  5. Flutter: Expanded Widget ile Alan GenişletmeExpanded'ın derinlemesine incelemesi: flex oranı nasıl hesaplanır, iç içe kullanım, Row ve Column dışında neden çalışmaz ve en sık görülen üç hata.
  6. Flutter: Spacer Widget ile Esnek BoşluklarSpacer'ın içinde ne olduğu, flex ile boşluk oranlama, SizedBox ve mainAxisAlignment ile farkı, kaydırılabilir alanlarda neden hata verdiği ve çözümü.
  7. Flutter: Expanded, Flexible ve Spacer Farkı ve TariflerExpanded, Flexible ve Spacer arasındaki fark, FlexFit.loose ile tight ayrımı ve üçünü birlikte kullanan dört tarif: araç çubuğu, kart, form, bölünmüş ekran.
  8. Flutter: mainAxisSize ile Alan ve Hizalama KontrolümainAxisSize'ın max ve min farkı, kısıtlarla ilişkisi, mainAxisAlignment'ın neden etkisiz kaldığı ve dialog, bottom sheet, buton grubu tarifleri.
  9. Flutter: Stack ve Positioned ile Üst Üste YerleşimFlutter Stack ve Positioned rehberi: Stack'in boyutu, fit, alignment, clipBehavior, Positioned.fill, PositionedDirectional, rozet ve katman tarifleri, hatalar.
  10. Flutter: MediaQuery ile Ekrana Göre OranlamaMediaQuery.sizeOf, paddingOf ve textScalerOf ile ekrana göre boyutlama; ne zaman LayoutBuilder veya FractionallySizedBox daha doğru olur ve sık yapılan hatalar.
  11. Flutter: LayoutBuilder ile Ekran Boyutuna Göre TasarımLayoutBuilder ile MediaQuery farkı, Material 3 ekran sınıflarıyla breakpoint düzeni, geniş ekranda içerik sınırı, sınırsız yükseklik ve intrinsic hataları.

Temel Widget’lar ve Girdi

  1. Flutter: Resim Eklemek - Assets ve Image.assetFlutter projesine resim ekleme: pubspec.yaml yapılandırması, Image.asset kullanımı, çözünürlük klasörleri, SVG, ağ resimleri ve sık yapılan asset hataları.
  2. Flutter: Card Widget ve Tasarım KullanımıFlutter Card rehberi: Material 3 Card.filled ve Card.outlined, resimde clipBehavior, InkWell ile tıklanabilir kart, sık hatalar ve ürün kartı örneği.
  3. Flutter: Giriş Widget'ları ve Durum GöstergeleriSwitch, Checkbox, Radio, Slider ve SegmentedButton ne zaman kullanılır? ProgressIndicator türleri, sık yapılan hatalar ve örnek bir ayarlar ekranı.
  4. Flutter: TextField ve TextEditingController KullanımıFlutter TextField rehberi: TextEditingController ve dispose, InputDecoration, klavye tipleri, inputFormatters, şifre alanı, FocusNode ve onChanged farkı.
  5. Flutter: Form Widget ve Girdi KontrolleriFlutter Form ve TextFormField ile doğrulama: validate() ile save() farkı, autovalidateMode, odak yönetimi, controller dispose ve giriş formu örneği.
  6. Flutter: DropdownButton Kullanımı ve ÖzellikleriFlutter DropdownButton ve DropdownButtonFormField kullanımı, Material 3 DropdownMenu, il-ilçe senaryosu ve value hatasının çözümü.
  7. Flutter: Tarih ve Saat Seçiciler (DatePicker & TimePicker)Flutter showDatePicker ve showTimePicker: tarih aralığı, Türkçe takvim, context.mounted, randevu senaryosu ve bir gün kayan tarih hatası.
  8. Flutter: GestureDetector Kullanımı ve Dokunma OlaylarıFlutter GestureDetector ile tıklama, sürükleme ve pinch olayları; InkWell farkı, HitTestBehavior, sık hatalar ve yakınlaştırılabilir fotoğraf örneği.
  9. Flutter: FloatingActionButton (FAB) Kullanımı ve ÖzellikleriFlutter FloatingActionButton: M3 boyutları, extended FAB, konumlandırma, kaydırırken gizleme, heroTag çakışması ve hatırlatıcı ekranı örneği.

Geri Bildirim ve Menüler

  1. Flutter: SnackBar ve SnackBarAction KullanımıFlutter SnackBar ve ScaffoldMessenger kullanımı: Geri Al aksiyonu, floating görünüm, kuyruk sorunu ve await sonrası context hataları.
  2. Flutter: AlertDialog Kullanımı ve ÖzelleştirmeFlutter AlertDialog ile onay alma, girdi toplama ve adaptive dialog; context.mounted, StatefulBuilder ve taşma hatalarının çözümü.
  3. Flutter: PopupMenuButton Kullanımı ve Menü YapılarıFlutter PopupMenuButton ile üç nokta menüsü: enum ile tip güvenliği, onSelected ve onTap farkı, liste satırı senaryosu ve sık hatalar.
  4. Flutter: BottomSheet ve showModalBottomSheet KullanımıFlutter'da showModalBottomSheet ile değer döndürmek, isScrollControlled, useSafeArea, showDragHandle, klavye boşluğu, DraggableScrollableSheet ve kalıcı sheet.

Uygulama İskeleti ve Navigasyon

  1. Flutter: AppBar Widget ve ÖzelleştirmeFlutter AppBar rehberi: title, leading, actions ve bottom kullanımı, Material 3'te kaydırınca renk değişimi ve sık yapılan hataların çözümü.
  2. Flutter'da Navigator ile Sayfalar Arası Geçiş ve Veri TransferiFlutter'da Navigator ile sayfa geçişi, veri aktarımı ve back stack yönetimi: push, pop, pushReplacement ve geri tuşu için güncel PopScope kullanımı.
  3. Flutter: BottomNavigationBar KullanımıFlutter BottomNavigationBar: currentIndex ve state, IndexedStack ile sayfa durumu koruma, fixed/shifting farkı, kaybolan öğeler hatası ve sepet rozeti örneği.
  4. Flutter: BottomNavigationBar ve NavigationBar KarşılaştırmasıBottomNavigationBar'dan Material 3 NavigationBar'a geçiş: özellik eşleme tablosu, labelBehavior, karar rehberi ve uyarlanabilir kabuk örneği.
  5. Flutter: TabBar ve TabBarView KullanımıFlutter TabBar ve TabBarView: DefaultTabController mı kendi TabController'ınız mı, sekme durumunu koruma, Material 3 ayarları ve sık yapılan hatalar.
  6. Flutter: Drawer Widget ve Yan Menü KullanımıFlutter Drawer ile yan menü: temel kurulum, Material 3 NavigationDrawer, menüyü kapatıp sayfaya geçme ve Scaffold.of context hatasının çözümü.
  7. Flutter: Theme ve ThemeData ile Açık ve Koyu TemaFlutter'da ThemeData ile tema kurmak: ColorScheme.fromSeed, açık ve koyu tema, ThemeMode, Theme.of ile okuma, TextTheme, bileşen temaları ve ThemeExtension.

Listeler ve Kaydırma

  1. Flutter: SingleChildScrollView, ListView ve NestedScrollViewSingleChildScrollView, ListView ve NestedScrollView farkı, klavye açılınca taşma, Expanded unbounded height hatası ve sekmeli NestedScrollView kurulumu.
  2. Flutter: ListView Widget KullanımıFlutter ListView rehberi: builder ile tembel listeleme, separated, itemExtent, shrinkWrap maliyeti ve unbounded height hatasının çözümü.
  3. Flutter: GridView Widget KullanımıFlutter GridView rehberi: count, extent ve builder kurucuları, iki grid delegate'in farkı, childAspectRatio taşma hatası ve shrinkWrap maliyeti.
  4. Flutter: SliverAppBar ile Kategori Başlığı ve Arama AlanıSliverAppBar'da arama kutusu bottom mu flexibleSpace mi, SliverPersistentHeader ile yapışkan kategori satırı, pinned/floating/snap ve RenderSliver hatası.

Asenkron Veri ve State Management

  1. Flutter: FutureBuilder ile Asenkron ListelemeFlutter FutureBuilder rehberi: snapshot durumlarını doğru okuma, Future'ı build içinde oluşturma hatası, initState çözümü ve setState ile yenileme.
  2. Flutter: HTTP İstekleri ve REST API KullanımıFlutter'da http paketiyle GET, POST, PUT ve DELETE, JSON'dan model sınıfı, durum kodları, zaman aşımı ve FutureBuilder ile yükleniyor ve hata ekranı.
  3. Flutter: StreamBuilder ile Gerçek Zamanlı Veri AkışıFlutter StreamBuilder rehberi: connectionState, initialData, broadcast ve tek abonelikli stream farkı, StreamController kapatma, listen() karşılaştırması.
  4. Flutter: Provider ile State ManagementFlutter'da Provider paketi ile state yönetimi, ChangeNotifier, Consumer, MultiProvider kullanımı ve best practices.
  5. Flutter: Riverpod 3 ile Modern State ManagementRiverpod 3 ile Flutter'da state yönetimi: Notifier, AsyncNotifier, ref.watch ve ref.read, family, autoDispose ve eski StateNotifier kodu için geçiş notları.
  6. Flutter: SharedPreferences ile Yerel Veri SaklamaFlutter'da shared_preferences ile tema ve ayar saklama: SharedPreferencesAsync, WithCache ve eski API farkı, geçiş aracı ve orada saklanmaması gerekenler.

Animasyonlar

  1. Flutter: Implicit Animations ile Sıfır Çaba, Maksimum EtkiAnimatedContainer, AnimatedOpacity, AnimatedPositioned ve diğer implicit animation widget'larıyla az kodla akıcı animasyonlar ekleyin.
  2. Flutter Explicit Animations: AnimationController RehberiAnimationController, Tween, AnimatedBuilder ile Flutter'da profesyonel animasyonlar oluşturun. Explicit animations'ın tüm detaylarını öğrenin.
  3. Flutter Hero Animasyonları ve Sayfa Geçiş EfektleriFlutter Hero animasyonu: tag eşleşmesi, uçuşun süresi ve eğrisi, flightShuttleBuilder, sık yapılan hatalar ve PageRouteBuilder ile özel sayfa geçişleri.

Yayın ve Gerçek Proje Notları

  1. Flutter'da Uygulama İkonu Oluşturma ve AyarlamaFlutter uygulamanıza hem Android hem iOS için farklı boyutlarda özel ikon nasıl eklenir? flutter_launcher_icons paketi ile otomatik ikon oluşturma.
  2. Flutter'da Kamerayı Kullanıcıya Bırakmak: Yön Zorlamadan Video ÇekmekFlutter camera paketinde ters dönen önizleme, kayıt başlarken donma ve kilitlenen kamera: Recapday'de çözdüğüm üç hatanın kodunu anlatıyorum.

Diğer yazılar