Bölüm 1 — Konu 2: Ortam Kurulumu (Flutter SDK, Android Studio/VS Code, Emulator/Simulator, DevTools'a İlk Bakış)
Dizi · 2/61 Flutter Türkçe Tutorial
- Bölüm 1 — Konu 1: Flutter Nedir, Mimarisi (Widget → Element → RenderObject, Skia/Impeller)
- Bölüm 1 — Konu 2: Ortam Kurulumu (Flutter SDK, Android Studio/VS Code, Emulator/Simulator, DevTools'a İlk Bakış)
- Bölüm 1 — Konu 3: İlk Proje Yapısı (`pubspec.yaml`, `lib/`, Klasör Mimarisi, `flutter create` Anatomisi)
- Bölüm 1 — Konu 4: Hot Reload / Hot Restart Ne Yapıyor, Neden Önemli
- Bölüm 2 — Konu 5: "Her Şey Widget'tır" Felsefesi, Widget Ağacı
- Bölüm 2 — Konu 6: StatelessWidget vs StatefulWidget + `setState()` Derinlemesine (Rebuild Mekanizması)
- Bölüm 2 — Konu 7: Temel Layout — Container, Row, Column, Stack, Padding, Align, Center
- Bölüm 2 — Konu 8: Constraint Sistemi — "Constraints Go Down, Sizes Go Up, Parent Sets Position"
- Bölüm 2 — Konu 9: `Expanded`, `Flexible`, `Spacer`, Intrinsic Widget'lar
- Bölüm 3 — Konu 10: MaterialApp/CupertinoApp, Scaffold, AppBar
- Bölüm 3 — Konu 11: `ListView`, `GridView`, `SingleChildScrollView` (+ Builder Pattern)
- Bölüm 3 — Konu 12: Text, TextStyle, Icon, Image, Asset Yönetimi
- Bölüm 3 — Konu 13: Custom Widget Yazma Prensipleri (Composition Over Inheritance)
- Bölüm 3 — Konu 14: Navigator 1.0 — Push/Pop, Named Routes
- Bölüm 4 — Konu 15: Form, TextField/TextFormField, GlobalKey<FormState>, Validasyon
- Bölüm 4 — Konu 16: Theme Sistemi (ThemeData, ColorScheme)
- Bölüm 4 — Konu 17: Responsive & Adaptive Tasarım (MediaQuery, LayoutBuilder, OrientationBuilder, Breakpoint Stratejileri)
- Bölüm 5 — Konu 18: Future/Async-Await Flutter Bağlamında, FutureBuilder
- Bölüm 5 — Konu 19: `Stream`, `StreamBuilder`
- Bölüm 5 — Konu 20: HTTP İstekleri (`http` / `dio` Paketleri)
- Bölüm 5 — Konu 21: JSON Serialization (Manuel → `json_serializable`/`freezed`)
- Bölüm 5 — Konu 22: Local Storage — `shared_preferences` → `Hive` → `sqflite`/Drift
- Bölüm 6 — Konu 23: InheritedWidget ve InheritedModel — "Neden setState Yetmiyor" Sorusunun Cevabı
- Bölüm 6 — Konu 24: Provider Paketi
- Bölüm 6 — Konu 25: Riverpod (Modern Yaklaşım, Provider'ın Halefi)
- Bölüm 6 — Konu 26: BLoC/Cubit Pattern (`flutter_bloc`)
- Bölüm 6 — Konu 27: GetX (Tartışmalı Ama Yaygın)
- Bölüm 6 — Konu 28: Karşılaştırma — Hangi Projede Hangisi?
- Bölüm 7 — Konu 29: Navigator 2.0 (Router, RouteInformationParser, RouterDelegate)
- Bölüm 7 — Konu 30: `go_router` Paketi (Pratik ve Modern Çözüm)
- Bölüm 7 — Konu 31: Deep Linking
- Bölüm 7 — Konu 32: Repository Pattern, Katmanlı Mimari (Data/Domain/Presentation)
- Bölüm 7 — Konu 33: Dependency Injection (`get_it`, `injectable`)
- Bölüm 7 — Konu 34: Clean Architecture Uyarlaması, SOLID Prensipleri
- Bölüm 8 — Konu 35: Implicit Animasyonlar
- Bölüm 8 — Konu 36: Explicit Animasyonlar (`AnimationController`, `Tween`, `Curve`)
- Bölüm 8 — Konu 37: Hero Animasyonları
- Bölüm 8 — Konu 38: `CustomPainter` / `Canvas`
- Bölüm 8 — Konu 39: Rive / Lottie Entegrasyonu
- Bölüm 9 — Konu 40: Platform Channels
- Bölüm 9 — Konu 41: Permission Yönetimi (`permission_handler`)
- Bölüm 9 — Konu 42: Kamera, Konum, Sensörler
- Bölüm 9 — Konu 43: Push Notification (Firebase Cloud Messaging)
- Bölüm 9 — Konu 44: Android/iOS Build Sistemleri
- Bölüm 10 — Konu 45: Test Yazımı (Unit, Widget, Integration, Golden)
- Bölüm 10 — Konu 46: CI/CD
- Bölüm 10 — Konu 47: Rebuild Optimizasyonu (`const`, `key` Kullanımı)
- Bölüm 10 — Konu 48: DevTools Profiling
- Bölüm 10 — Konu 49: Lazy Loading, Pagination, Büyük Liste Performansı
- Bölüm 11 — Konu 50: Firebase Ekosistemi (Auth, Firestore, Storage, Functions)
- Bölüm 11 — Konu 51: Supabase Alternatifi
- Bölüm 11 — Konu 52: GraphQL (Opsiyonel)
- Bölüm 11 — Konu 53: Store Yayınlama Süreci (İmzalama, Listing, Versiyonlama)
- Bölüm 11 — Konu 54: App Size, Obfuscation, Flavor Yönetimi
- Bölüm 12 — Konu 55: Flutter Web / Desktop
- Bölüm 12 — Konu 56: Custom `RenderObject` Yazımı
- Bölüm 12 — Konu 57: Engine Mimarisi Derinlemesine (Impeller vs Skia)
- Bölüm 12 — Konu 58: Plugin Geliştirme, pub.dev'e Paket Yayınlama
- Bölüm 12 — Konu 59: Monorepo Mimarisi (Melos)
- Bölüm 12 — Konu 60: Erişilebilirlik (Accessibility) Derinlemesine
- Bölüm 12 — Konu 61: Yerelleştirme (Localization / i18n)
İçindekiler 9 başlık
Flutter SDK Kurulumu
Dart tutorial'ında Dart SDK'yı bağımsız kurmuştuk (Dart Bölüm 1 Konu 2'yi hatırla). Flutter SDK'sı, kendi içinde zaten bir Dart SDK'sı barındırır — yani Flutter'ı kurduğunda, aslında uyumlu bir Dart sürümü de otomatik olarak gelir.
Kurulum adımları (özet, platforma göre değişir):
- flutter.dev üzerinden, işletim sistemine uygun Flutter SDK'yı indir.
- SDK'yı bir klasöre çıkar (örneğin
C:\src\flutterveya~/development/flutter). - Flutter'ın
binklasörünü PATH ortam değişkenine ekle (Dart Bölüm 1'de PATH kavramını görmüştük — aynı mantık). - Terminali aç, kurulumu doğrula:
flutter doctorflutter doctor — Kurulumun "Sağlık Kontrolü"
Bu komut, Flutter geliştirme ortamının eksiksiz olup olmadığını kontrol eder ve şuna benzer bir çıktı verir:
[✓] Flutter (Channel stable, 3.x.x)
[✓] Android toolchain - develop for Android devices
[✗] Xcode - develop for iOS and macOS (Xcode kurulu değil)
[✓] Chrome - develop for the web
[✓] Android Studio
[✓] VS Code
[✓] Connected deviceHer [✗] işareti, eksik bir bileşeni gösterir — flutter doctor, genelde ne yapman gerektiğini de açıklar (örneğin "Xcode'u App Store'dan indirin" gibi). Tüm maddeleri yeşile çevirmek zorunda değilsin — örneğin sadece Android geliştirmek istiyorsan, Xcode'a (sadece iOS/macOS için gerekir) ihtiyacın olmaz.
IDE Seçimi — VS Code vs Android Studio
Dart tutorial'ında VS Code'u önermiştik (Dart Bölüm 1 Konu 2). Flutter geliştirmede de iki ana seçenek var:
| VS Code | Android Studio | |
|---|---|---|
| Hafiflik | ✅ Çok hafif, hızlı açılır | ❌ Daha ağır, IDE tam donanımlı |
| Flutter/Dart eklentisi | ✅ Var, güçlü | ✅ Yerleşik (JetBrains tabanlı) |
| Android emulator yönetimi | ⚠️ Android Studio'ya bağımlı kalabilir | ✅ Doğrudan entegre |
| Genel tercih | Günlük hızlı geliştirme | Android'e özel derin ayarlar gerektiğinde |
Pratik öneri: VS Code ile başla (Dart'ta zaten kullandığın araç) — Flutter ve Dart eklentilerini kur. Android emulator'ü yönetmek için Android Studio'yu sadece o amaçla (arka planda) kurman gerekecek, ama günlük kodlamayı VS Code'da yapabilirsin.
VS Code'a eklenti kurulumu:
- Extensions (Uzantılar) sekmesine git.
- "Flutter" ara, kur (bu otomatik olarak Dart eklentisini de kurar).
Emulator / Simulator — Sanal Cihaz Kurulumu
Uygulamanı test etmek için gerçek bir telefona ihtiyacın yok — bir emulator (Android için sanal cihaz) veya simulator (iOS için sanal cihaz, sadece macOS'ta çalışır) kullanabilirsin.
Android Emulator kurulumu:
- Android Studio'yu aç.
- "Device Manager" (Cihaz Yöneticisi) bölümüne git.
- "Create Device" ile bir sanal telefon modeli seç (örneğin Pixel 7).
- Bir Android sürümü (system image) indir ve seç.
- Emulator'ü başlat.
iOS Simulator (sadece macOS):
- Xcode kurulduğunda otomatik olarak gelir,
open -a Simulatorkomutuyla açılabilir.
Gerçek cihaz kullanmak da mümkün:
- Android: Telefonda "Geliştirici Seçenekleri"ni açıp USB hata ayıklamayı (USB debugging) etkinleştir, USB ile bağla.
- iOS: Bir Apple geliştirici hesabıyla, cihazı Xcode üzerinden "güvenilir" olarak işaretle.
İlk Kontrol — Bağlı Cihazları Listeleme
flutter devicesBu komut, o anda kullanılabilir tüm cihazları (açık emulator'ler, bağlı gerçek cihazlar, hatta Chrome tarayıcısı — web geliştirme için) listeler:
2 connected devices:
sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64
Chrome (web) • chrome • web-javascriptFlutter DevTools — İlk Bakış
Dart tutorial'ında DevTools'a değinmemiştik (o zaman henüz görsel bir uygulama yoktu) — şimdi kısaca tanıyalım. Flutter DevTools, uygulamanı çalışırken analiz etmeni sağlayan bir dizi görsel araçtır — tarayıcıda açılan bir web arayüzü şeklinde çalışır.
DevTools'un sunduğu bazı araçlar (her birini ileride, ilgili bölümlerde derinlemesine işleyeceğiz):
- Widget Inspector: Widget ağacını (Bölüm 1 Konu 1'de öğrendiğimiz) görsel olarak inceleme.
- Performance/Timeline: Uygulamanın hangi noktalarda yavaşladığını analiz etme (Bölüm 9'da işleyeceğiz).
- Memory: Bellek kullanımını izleme (Dart Bölüm 13'te öğrendiğimiz garbage collection'ı görsel olarak gözlemleme).
- Network: API çağrılarını izleme (Bölüm 5'te işleyeceğiz).
DevTools, bir uygulama çalışırken otomatik olarak erişilebilir hale gelir — bunu bir sonraki derste, ilk projemizi çalıştırdığımızda gerçekten göreceğiz.
Kurulumu Doğrulama — Örnek Bir Proje ile Test
Henüz kendi projemizi oluşturmadık (Bölüm 1 Konu 3'te yapacağız), ama Flutter'ın kendi örnek projesiyle hızlı bir test yapabilirsin:
flutter create test_projesi
cd test_projesi
flutter runEğer her şey doğru kurulduysa, bu komutlar bir emulator/cihaz üzerinde, Flutter'ın varsayılan sayaç uygulamasını (counter app) açacaktır. Bunu bir sonraki derste, kendi projemizi oluştururken detaylı olarak inceleyeceğiz.
Sık Karşılaşılan Kurulum Sorunları
| Sorun | Olası Çözüm |
|---|---|
flutter: command not found |
Flutter'ın bin klasörü PATH'e eklenmemiş — terminali yeniden başlat veya PATH'i kontrol et |
| Android licenses kabul edilmemiş | flutter doctor --android-licenses çalıştırıp lisansları kabul et |
| Emulator çok yavaş açılıyor | Bilgisayarında donanım hızlandırma (HAXM/Hyper-V, Apple Silicon'da otomatik) etkin mi kontrol et |
| VS Code'da Flutter komutları görünmüyor | Flutter eklentisinin kurulu ve aktif olduğunu kontrol et, VS Code'u yeniden başlat |
🎯 Bu Dersten Çıkarılması Gerekenler
- Flutter SDK, kendi içinde uyumlu bir Dart SDK'sı barındırır — ayrıca Dart kurmana gerek yoktur.
flutter doctor, geliştirme ortamının eksiksiz olup olmadığını kontrol eder ve eksikleri raporlar.- VS Code (hafif, günlük kullanım) ve Android Studio (emulator yönetimi, derin Android ayarları) birlikte kullanılabilir.
- Emulator/simulator, gerçek cihaz olmadan test yapmanı sağlar;
flutter devicesile bağlı cihazları listeleyebilirsin. - Flutter DevTools, widget inceleme, performans analizi, bellek izleme gibi görsel araçlar sunan bir web arayüzüdür.
📝 Ödevler
- [ ] Flutter SDK'yı kur,
flutter doctorçalıştır, çıkan tüm maddeleri (eksik olanlar dahil) not al. - [ ] VS Code'a Flutter ve Dart eklentilerini kur.
- [ ] Bir Android emulator oluştur (Android Studio üzerinden), başlat ve çalıştığını doğrula.
- [ ]
flutter deviceskomutunu çalıştır, çıkan cihaz listesini incele. - [ ]
flutter create test_projesiile örnek bir proje oluştur,flutter runile çalıştır, varsayılan sayaç uygulamasının açıldığını gözlemle (bu projeyi silmene gerek yok, bir sonraki derste kendi projemizi ayrıca oluşturacağız).
Sıradaki konu: Bölüm 1 — Konu 3: İlk Proje Yapısı (pubspec.yaml, lib/, Klasör Mimarisi, flutter create Anatomisi)