Hedef: 15 derslik bir programda sıfırdan Flutter öğrenip basit bir uygulama geliştirmek.
Ders İşleyişi:
- Her ders teorik ve pratik bölümlerden oluşacak.
- Teorik bölümde ilgili konunun detaylı anlatımı, görseller ve videolarla desteklenecek.
- Pratik bölümde ise öğrenilen bilgiler pekiştirilecek ve mini projeler ile uygulamaya geçirilecek.
Ders Programı:
1. Ders:
Teorik:
- Flutter nedir?
- Flutter’ın tarihçesi ve popülerliği
- Flutter’ın avantajları ve dezavantajları
- Flutter’ın kullanım alanları
- Flutter ile hangi tür uygulamalar geliştirilebilir?
- Flutter’ı kimler kullanır?
- Dart programlama dili:
- Değişkenler: Farklı veri tipleri, tanımlama, atama, kapsam
- Temel operatörler: Matematiksel, mantıksal, karşılaştırma operatörleri
- Yorumlar ve satır içi kod
Pratik:
- Basit bir hesap makinesi uygulaması geliştirme
- Farklı veri tiplerini kullanma
- Temel operatörler ile hesaplama yapma
2. Ders:
Teorik:
- Dart programlama dili:
- Kontrol yapıları:
if
veelse
bloklarıswitch-case
deyimifor
döngüsüwhile
döngüsüdo-while
döngüsü
- Fonksiyonlar:
- Tanımlama, parametreler, dönüş tipi
- Yerel ve global değişkenler
- Fonksiyon çağrıları
- Kontrol yapıları:
Pratik:
- Kullanıcıdan veri alan ve kontrol yapıları ile işleyen basit bir uygulama geliştirme
- Fonksiyonlar kullanarak kod tekrarını önleme
3. Ders:
Teorik:
- Dart programlama dili:
- Sınıflar ve nesneler:
- Sınıf tanımlama, nesne oluşturma
- Kalıtım ve polimorfizm
- Özellikler ve metodlar
- Yapıcılar (constructor)
- Koleksiyonlar:
- Listeler, kümeler, haritalar
- Temel işlemler ve fonksiyonlar
- Sınıflar ve nesneler:
Pratik:
- Kullanıcı bilgilerini saklayan ve yöneten bir sınıf geliştirme
- Koleksiyonlar kullanarak verileri organize etme
4. Ders:
Teorik:
- Kalıtım, arayüzler ve soyut sınıflar:
- Kalıtım türleri: Tekli ve çoklu kalıtım
- Soyut sınıflar ve soyut metodlar
- Arayüzler (interface)
- Kalıtım ve arayüzlerin kullanım alanları
Pratik:
- Farklı nesneler arasında kalıtım ilişkisi kuran bir uygulama geliştirme
- Arayüzler kullanarak kodun modülerliğini ve tekrar kullanılabilirliğini artırma
5. Ders:
Teorik:
- Flutter temelleri:
- Widget kavramı:
- Widget nedir?
- Widget türleri: Stateful ve stateless widget’lar
- Widget yaşam döngüsü
- Widget ağacı (Widget tree):
- Widget’ların hiyerarşik organizasyonu
- Widget ağacını oluşturma ve yönetme
- Widget kavramı:
Pratik:
- Basit bir “Merhaba Dünya” uygulaması geliştirme
- Farklı widget’ları kullanarak arayüz oluşturma
6. Ders:
Teorik:
- Flutter temelleri:
- Temel widget’lar:
- MaterialApp ve Scaffold
- Layout widget’ları: Container, Row, Column, Stack, vs.
- Temel widget’lar: Text, Image, Icon, vs.
- Widget’ların özelleştirilmesi:
- Özelliklerin belirlenmesi
- Stillerin ve temaların kullanımı
- Temel widget’lar:
Pratik:
- Farklı layout widget’ları kullanarak karmaşık bir arayüz oluşturma
- Widget’ları özelleştir
7. Ders:
Teorik:
- Widget İşlevselliği ve Etkileşim:
- State yönetimi:
- Stateful widget’lar ve state’i değiştirme
- setState() metodu
- Basit state yönetimi teknikleri
- Kullanıcı etkileşimi:
- GestureDetector widget’ı
- onPressed, onTap gibi event handler’lar
- Form widget’ları ve form doğrulama
- State yönetimi:
Pratik:
- Kullanıcıdan veri alan ve state yönetimi ile işleyen bir uygulama geliştirme
- Form widget’ları kullanarak bir kayıt formu oluşturma
- Form doğrulama ile hatalı girişleri kontrol etme
8. Ders:
Teorik:
- Widget İşlevselliği ve Etkileşim:
- Gelişmiş widget’lar:
- Input, Slider, DropdownButton, etc.
- Animasyonlar:
- Basit animasyonlar ve geçişler
- AnimationController ve Tween
- Gelişmiş widget’lar:
Pratik:
- Gelişmiş widget’ları kullanarak karmaşık bir arayüz oluşturma
- Basit animasyonlar ve geçişler ekleme
- AnimationController ve Tween kullanarak özel animasyonlar oluşturma
9. Ders:
Teorik:
- Gelişmiş Konular:
- Routing ve navigasyon:
- Navigator ve Route widget’ları
- Farklı sayfalar arasında geçiş
- Parametre gönderme ve alma
- State yönetimi için alternatif yaklaşımlar:
- Provider
- Bloc
- GetX
- Routing ve navigasyon:
Pratik:
- Farklı sayfalar arasında navigasyon içeren bir uygulama geliştirme
- Provider veya Bloc gibi alternatif state yönetimi yaklaşımlarını kullanma
10. Ders:
Teorik:
- Gelişmiş Konular:
- Uygulama performansı ve optimizasyonu:
- Widget ağacı optimizasyonu
- Görüntü optimizasyonu
- Performans profilleme ve hata ayıklama
- Uygulama performansı ve optimizasyonu:
Pratik:
- Uygulamanın performansını analiz etme ve optimize etme
- Görüntüleri optimize etme ve bellek kullanımını azaltma
11. Ders:
Teorik:
- Flutter paketleri ve API kullanımı:
- Paket yönetimi: pubspec.yaml dosyası ve dependencies
- Önemli Flutter paketleri: http, shared_preferences, flutter_bloc, vs.
- Dart ve Flutter için API çağrıları ve veri işleme
Pratik:
- Bir API’den veri alan ve gösteren bir uygulama geliştirme
- HTTP paketini kullanarak API çağrıları yapma
- Verileri işlemek ve görüntülemek için JSON ve FutureBuilder kullanma
12. Ders:
Teorik:
- Firebase veya diğer backend servisleri entegrasyonu
- Firebase Authentication ve Firestore
- Veri depolama ve kullanıcı yönetimi
Pratik:
- Firebase Authentication ve Firestore ile basit bir uygulama geliştirme
- Kullanıcıları kaydetme ve doğrulama
- Verileri Firestore’da depolamak ve okumak
13. Ders:
Teorik:
- Çok platformlu uygulama geliştirme: iOS ve Android uyumluluğu
- Platform kanalları ve platform özel kod yazma
Pratik:
- Hem iOS hem de Android’de çalışan basit bir uygulama geliştirme
- Platform kanalları kullanarak platform özel kod yazma
14. Ders:
Teorik:
- Flutter web ve masaüstü uygulamaları oluşturma
- Flutter web ve masaüstü için özel widget’lar ve API’ler
Pratik:
- Basit bir web ve masaüstü uygulaması geliştirme
- Flutter web ve masaüstü için özel widget’ları kullanma
15. Ders:
- Proje sunumu ve değerlendirme
- Öğrenilen bilgilerin pekiştirilmesi ve uygulamaya geçirme
- Soru-cevap ve tartışma
Programın Ötesinde:
- Derslerde işlenen konuların daha derinlemesine öğrenilmesi için ek kaynaklar ve referanslar paylaşılacaktır.
- Öğrenilen bilgilerin pekiştirilmesi için mini projeler ve ödevler verilecektir.
- Soru-cevap ve tartışma platformları aracılığıyla öğrenci-öğretmen etkileşimi sağlanacaktır