Bu proje, Medium'daki Flutter'da Firebase Analytics ile BLoC Event Takibi makalem için oluşturulmuş bir demo uygulamasıdır.
Bu demo, makalede detaylı olarak açıklanan BLoC mimarisi ile Firebase Analytics entegrasyonunun avantajlarını pratik olarak göstermek için oluşturulmuştur. Asıl odak noktası UI tasarımı değil, BLoC event'leri ile analytics arasındaki doğal uyum ve bu yaklaşımın sağladığı avantajlardır:
- Event Bazlı Yapının Doğal Uyumu: BLoC event'leri ile Firebase Analytics event'lerinin mükemmel eşleşmesi
- Merkezi Event Loglama: Tüm BLoC event'leri otomatik olarak analytics'e gönderilir
- Temiz Kod: UI'da hiç analytics kodu bulunmaz, tüm loglama BLoC Observer'da merkezi olarak yapılır
- Test Edilebilirlik: Mock servis ile test ortamında analytics izole edilebilir
- Sürdürülebilirlik: Tek bir yerden tüm analytics mantığı yönetilir
lib/
├── core/
│ ├── bloc/
│ │ └── app_bloc_observer.dart # Merkezi analytics loglama
│ ├── di/
│ │ └── service_locator.dart # Dependency injection
│ ├── routing/
│ │ └── app_router.dart # GoRouter yapılandırması
│ └── services/
│ └── analytics_service.dart # Analytics servis soyutlaması
├── features/
│ ├── auth/
│ │ ├── bloc/
│ │ │ └── auth_bloc.dart # Authentication BLoC
│ │ └── presentation/
│ │ └── pages/
│ │ └── login_page.dart # Login sayfası
│ ├── home/
│ │ └── presentation/
│ │ └── pages/
│ │ └── home_page.dart # Ana sayfa
│ └── shop/
│ ├── bloc/
│ │ └── shop_bloc.dart # E-ticaret BLoC
│ └── presentation/
│ └── pages/
│ └── shop_page.dart # E-ticaret sayfası
└── main.dart # Ana uygulama dosyası
AppBlocObserver
ile tüm BLoC event'leri otomatik olarak loglanır- Event türüne göre özelleştirilmiş parametreler
- State geçişleri ve hatalar da loglanır
AnalyticsService
abstract sınıfı ile test edilebilirlikFirebaseAnalyticsService
veMockAnalyticsService
implementasyonları- Dependency injection ile kolay servis değiştirme
- BLoC pattern ile state management
- GoRouter ile navigation
- GetIt ile dependency injection
- Responsive design için flutter_screenutil
- Mock servis ile test ortamında izole edilebilir
- BLoC testleri ile event'lerin doğru çalıştığını doğrulama
- Analytics çağrılarının doğru yapıldığını test etme
Not: Bu sayfalar sadece BLoC event'lerini tetiklemek ve analytics entegrasyonunu göstermek için oluşturulmuştur. UI tasarımı ikincil öneme sahiptir.
- Proje hakkında bilgi
- Demo sayfalarına yönlendirme
- BLoC Analytics entegrasyonu özellikleri
- Email/şifre ile giriş (
LoginPressed
event'i tetikler) - Kayıt olma (
SignUpPressed
event'i tetikler) - Test kullanıcısı:
test@example.com
/password
- Ürün listesi (
ViewProductPressed
event'i tetikler) - Sepete ekleme (
AddToCartPressed
event'i tetikler) - Satın alma (
PurchasePressed
event'i tetikler)
- Bağımlılıkları yükleyin:
flutter pub get
- Mock sınıflarını oluşturun:
flutter packages pub run build_runner build
-
Firebase konfigürasyonu (opsiyonel):
- Firebase Console'da yeni proje oluşturun
- Android uygulaması ekleyin (package:
com.example.bloc_analytics_tracking
) google-services.json
dosyasınıandroid/app/
klasörüne koyun- Analytics'i etkinleştirin
-
Uygulamayı çalıştırın:
flutter run
Not: Firebase konfigürasyonu olmadan da Mock Analytics servisi ile çalışır.
Testleri çalıştırmak için:
flutter test
Uygulama çalıştığında aşağıdaki event'ler otomatik olarak loglanır:
login
- Kullanıcı girişisign_up
- Kullanıcı kaydı
add_to_cart
- Sepete eklemepurchase
- Satın almaview_product
- Ürün görüntüleme
state_transition
- State geçişleribloc_error
- BLoC hataları
Gerçek Firebase Analytics entegrasyonu için:
- Firebase projesi oluşturun
google-services.json
(Android) veGoogleService-Info.plist
(iOS) dosyalarını ekleyinFirebaseAnalyticsService
içindeki print ifadelerini gerçek Firebase çağrıları ile değiştirin:
@override
void logEvent(String name, {Map<String, dynamic>? parameters}) {
FirebaseAnalytics.instance.logEvent(
name: name,
parameters: parameters,
);
}
Not: UI tasarımı bu projenin ana odak noktası değildir. Aşağıdaki özellikler sadece BLoC event'lerini tetiklemek ve analytics entegrasyonunu göstermek için minimal olarak uygulanmıştır:
- Material Design 3 (temel)
- Responsive tasarım (flutter_screenutil ile)
- Loading state'leri (BLoC state'lerini göstermek için)
- Error handling (BLoC error state'lerini göstermek için)
- Snackbar bildirimleri (event tetikleme sonuçlarını göstermek için)
Bu proje, Medium'daki "Flutter'da Firebase Analytics ile BLoC Event Takibi" makalesinde detaylı olarak açıklanan tüm kavramları pratik olarak gösterir:
- Event Bazlı Yapının Doğal Uyumu: BLoC event'leri ile Firebase Analytics'in mükemmel eşleşmesi
- Merkezi ve Temiz Loglama:
BlocObserver
ile tek noktadan tüm event'lerin loglanması - Parametre Loglama ve Servis Soyutlaması:
AnalyticsService
ile test edilebilir yapı - Test Edilebilirlik Avantajları: Mock servis ile izole test ortamı
Bu projede makalede verilen tüm kod örnekleri gerçek implementasyonlarla desteklenmiştir:
AppBlocObserver
sınıfıAnalyticsService
abstract sınıfı ve implementasyonları- BLoC event'leri ve parametre loglama
- Dependency injection yapısı
Bu proje MIT lisansı altında lisanslanmıştır.
Baransel Kılınç
- Medium: Flutter'da Firebase Analytics ile BLoC Event Takibi
- LinkedIn: Baransel Kılınç