Flutter 3D logosu yanında iki Flutter widget bloğu bembeyaz arka planda premium kompozisyon

Flutter eğitimi, aynı kod tabanından iOS ve Android'e tutarlı UI çıkartmak isteyen mühendisleri pratik seviyede yetiştirir. Widget tree ve build context Dart'ın asenkron yapısıyla okunur; Stateless ile Stateful widget arasında side-effect'e göre seçim yapma somut örneklerle pekiştirilir.

Program sonunda katılımcı, BLoC, Riverpod ve Provider arasında state yönetim tercihi yapar; Platform Channel ile native iOS/Android API çağırır; Hot Reload ile Hot Restart farkını performans senaryosunda ayırt eder. Cupertino ve Material widget'ı platform-aware şekilde karıştırma eğitimin UX tarafını oluşturur. Eğitim materyalleri Flutter belgeleri ile uyumlu hazırlanmıştır.

Katılımcı Profili

Bu eğitim, iOS ve Android'i tek kod tabanından yönetmek isteyen rollere yöneliktir:

  • Mobil Geliştiriciler: iOS ve Android'i tek codebase ile yazan mühendisler
  • Cross-platform Geliştiriciler: Multi-platform ürün geliştiren roller
  • Frontend Geliştiriciler: Mobile tarafına geçiş yapan web mühendisleri
  • Startup Mühendisleri: MVP'yi hızla iOS+Android'e çıkarmak isteyenler
  • Mobil Teknik Liderler: Flutter proje mimarisi tasarlayan roller

Ön Gereklilikler

Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:

  • Herhangi bir dilde OOP (class, inheritance) deneyimi
  • Dart veya JavaScript / TypeScript'e temel düzeyde aşinalık
  • Mobil uygulama mantığına (lifecycle, navigation) giriş seviyesi aşinalık
  • Git ile commit, branch ve PR workflow'una rahatlık
  • IDE deneyimi (VS Code veya Android Studio tercihen)

Süresi ve Tarihi

Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.

Kazanımlar

Bu programın sonunda katılımcı, Flutter ile aynı kod tabanından iOS ve Android'e tutarlı UI çıkarabilir:

  • Widget tree ve build context'i Dart'ın asenkron yapısıyla okur
  • Stateless ve Stateful widget arasında side-effect'e göre seçer
  • BLoC, Riverpod ve Provider arasında state yönetim tercihi yapar
  • Platform channel ile native iOS/Android API çağırır
  • pubspec.yaml ve lock dosyasıyla dependency'i bilinçli yönetir
  • Hot reload ile hot restart farkını performans senaryosunda ayırır
  • Cupertino ve Material widget'ı platform-aware şekilde karıştırır

Flutter Eğitimi Konuları

1. Flutter ve Dart Ekosistemi

  • Cross-platform tek kod tabanı: iOS, Android, Web, Desktop
  • Flutter ve React Native, Xamarin karşılaştırması
  • Skia rendering engine ve native widget bypass
  • Flutter SDK kurulumu ve flutter doctor

2. Dart Dili Temelleri

  • Strong type system ve sound null safety
  • var, final, const ve late değişken modifier'ları
  • Function, optional parameter, named argument
  • Mixin, abstract, interface yaklaşımları
  • Extension method kullanımı

3. Dart - Async, Future, Stream

  • Future, async/await temelleri
  • Stream ve broadcast stream farkı
  • StreamController ve subscription yönetimi
  • Isolate ile gerçek paralel işlem

4. Widget Tree ve Element Tree

  • Everything is a widget felsefesi
  • Widget, Element, RenderObject üç ağaç modeli
  • BuildContext ve widget ağacındaki yer
  • Hot reload ve hot restart farkı

5. StatelessWidget ve StatefulWidget

  • Stateless: immutable, parametre ile yeniden çizim
  • Stateful: state ile dinamik UI
  • setState ve rebuild mantığı
  • Widget lifecycle: initState, dispose, didUpdateWidget

6. Layout Widget'ları

  • Row, Column, Stack, Flex
  • Expanded, Flexible, Spacer
  • Container, SizedBox, Padding
  • SliverList ve CustomScrollView
  • LayoutBuilder ile responsive tasarım

7. Material Design ve Cupertino

  • Material 3 widget kütüphanesi
  • Cupertino: iOS-style widget'lar
  • ThemeData ve dark mode desteği
  • Adaptive widget seçimi (platform-aware)

8. Navigation - go_router ve Navigator 2.0

  • Navigator 1.0 (push/pop) ve sınırları
  • Navigator 2.0 declarative routing
  • go_router ile modern URL-based navigation
  • Deep link ve named route
  • Nested navigation ve bottom nav

9. State Management - Provider ve Riverpod

  • InheritedWidget temeli
  • Provider: ChangeNotifier ve Consumer
  • Riverpod: compile-safe state management
  • StateNotifier, FutureProvider, StreamProvider

10. State Management - BLoC ve Cubit

  • BLoC pattern: event ve state akışı
  • Cubit: BLoC'un basitleştirilmiş hali
  • flutter_bloc paketi ve BlocBuilder, BlocListener
  • State management karar matrisi

11. HTTP ve REST API - dio, http

  • http paketi ile temel istek
  • dio: interceptor, retry, cancel token
  • JSON serialization: json_serializable, freezed
  • Repository pattern ile katman ayrımı

12. Local Storage - shared_preferences, sqflite

  • shared_preferences: key-value ayar
  • sqflite: SQLite veritabanı
  • flutter_secure_storage: hassas veri
  • path_provider ile dosya sistemi

13. Hive ve Isar - NoSQL Alternatifler

  • Hive: lightweight NoSQL, pure Dart
  • Isar: high-performance, indexed
  • ObjectBox alternatifi
  • NoSQL ve SQLite seçim kriterleri

14. Form ve Validation

  • Form, FormField, TextFormField
  • GlobalKey<FormState> ile validation
  • Custom validator yazımı
  • reactive_forms paketi alternatifi

15. Animation - Implicit ve Explicit

  • Implicit: AnimatedContainer, AnimatedOpacity
  • Explicit: AnimationController, Tween
  • Hero animation ile sayfa geçişi
  • Custom CurvedAnimation
  • Lottie ve Rive entegrasyonu

16. Platform Channels ve Native Integration

  • MethodChannel ile platform-specific kod
  • EventChannel ile stream-based iletişim
  • Plugin geliştirme yapısı
  • FFI (Foreign Function Interface) ile C entegrasyonu

17. Firebase Entegrasyonu

  • FlutterFire ekosistemi
  • Authentication, Firestore, Storage
  • Cloud Messaging ile push notification
  • Crashlytics ve Performance Monitoring

18. Custom Painter ve Canvas

  • CustomPainter ile drawing API
  • Canvas, Path, Paint sınıfları
  • Gesture detection custom widget'ta
  • Performance considerations

19. Performance - Tree Rebuild ve const

  • const constructor ile rebuild önleme
  • Widget rebuild scope minimize etme
  • Flutter DevTools ve Performance Overlay
  • Repaint Boundary ve raster cache
  • Image cache ve lazy loading

20. Testing - Widget, Integration

  • Unit test ve mockito kullanımı
  • Widget test ve WidgetTester
  • Integration test ile gerçek device test
  • Golden test ile UI regression

21. Build ve Release - Android ve iOS

  • Android: keystore ve signing
  • iOS: provisioning profile ve App Store Connect
  • Flavor ile dev/staging/prod ayrımı
  • Code signing ve sertifika yönetimi

22. Web ve Desktop Deploy

  • Flutter Web: CanvasKit ve HTML renderer
  • Desktop: Windows, macOS, Linux build
  • PWA yapılandırması
  • Multi-platform release pipeline

FLUTTER EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları


Stateless ve Stateful widget arasında karar nasıl verilir?

Widget'ın yaşam süresi boyunca dahili state'i değişmiyorsa Stateless yeterli — daha hafif, daha performanslı. Animasyon, input değişimi, network durumu gibi runtime mutation gerekiyorsa Stateful (veya provider/Riverpod gibi external state). Çoğu wrapper widget Stateless olmalıdır.

BLoC, Riverpod ve Provider arasında nasıl seçim yapılır?

Provider en basit DI ve ChangeNotifier tabanlı state — küçük uygulamada yeterli. Riverpod Provider'ın evrimi, compile-time safety ve daha test edilebilir. BLoC event-state pattern ile karmaşık iş akışını yönetir, ekibin reactive deneyimi varsa doğru. Yeni projeler Riverpod'a yöneliyor.

Platform Channel ile native API'ye nasıl erişilir?

MethodChannel Dart-native asenkron köprü kurar — Dart'tan invokeMethod, native'de setMethodCallHandler. Sık iletişim için EventChannel stream, byte transferi için BasicMessageChannel kullanılır. Pigeon kütüphanesi type-safe code generation ile boilerplate'i azaltır.

Hot Reload ile Hot Restart farkı performansı nasıl etkiler?

Hot Reload sadece değişen Dart kodunu inject eder, state korunur — UI iterasyonu 1-2 saniyede yapılır. Hot Restart uygulamayı baştan başlatır, state sıfırlanır ama daha kapsamlı değişiklikleri (initializer, main) yansıtır. Geliştirici deneyiminde Reload günlük rutin, Restart ara sıra gerekir.

Cupertino ile Material widget platform-aware nasıl karıştırılır?

Theme.of(context).platform veya defaultTargetPlatform kontrolü ile iOS'ta Cupertino, Android'de Material widget render edilir. Yaygın yaklaşım: ana navigasyon platforma göre değişir (CupertinoTabBar vs BottomNavigationBar), iç widget'lar Material kalır. adaptive widget'lar (Switch.adaptive) otomatik platform seçer.

Flutter uygulamasında performans darboğazı nasıl tespit edilir?

DevTools Performance Overlay janky frame'leri gösterir. Timeline view widget rebuild sayısını görselleştirir — gereksiz setState çağrıları yakalanır. const constructor kullanımı, ListView.builder yerine ListView, RepaintBoundary ile boya ayırma yaygın optimizasyonlar. CPU profiler hot path'i belirler.