# Flutter Ekosistemi (Son Güncelleme: 2025-01-06)

**Değişiklik:** Flutter uygulamaları ve paylaşılan mimarinin kapsamlı analizi
**Dosya:** `.docs/12-flutter-ekosistemi.md`
**Analiz Tarihi:** 2025-01-06
**Not:** 8+ Flutter uygulamasının mimarisi, state yönetimi, backend entegrasyonu ve deployment stratejileri

## 📱 Uygulamalar ve Genel Bakış

### Ana Uygulamalar

| Uygulama | Amaç | Versiyon | SDK | Platform Desteği |
|----------|------|----------|-----|------------------|
| `fikoyt_akcali` | Finans/Bütçe yönetimi | 2.0.4+21 | ^3.6.0-134.0.dev | Android, iOS, Windows, Web |
| `fikoyt_mesaici` | Puantaj/Maaş takip | 2.0.5+33 | ^3.4.0-134.0.dev | Android, iOS, Windows, Web |
| `fikoyt_sistem` | Sistem yönetimi | - | - | Android, iOS, Windows, Web |
| `fikoyt_hmi_pano` | HMI kontrol paneli | - | - | Android, iOS, Windows, Web |
| `fikoyt_akcali_v1` | Akçalı v1 (legacy) | - | - | Android, iOS, Windows, Web |
| `fiko_flutter_web` | Web uygulaması | - | - | Web |
| `fikoyt_plugin` | Özel Flutter plugin | 0.0.1 | ^3.8.0-149.0.dev | Tüm platformlar |

### Paylaşılan Kütüphaneler

| Kütüphane | Versiyon | Amaç |
|-----------|----------|------|
| `fikoyt_ui` | 0.0.1 | Ortak UI bileşenleri ve temel servisler |
| `fikoyt_ui_web` | 0.0.1 | Web'e özel UI bileşenleri |

## 🏗️ Mimarí ve Desenler

### 1. Merkezi Servis Mimarisi

**FikoYTCoreService** - Tüm uygulamaların temelini oluşturan merkezi servis:

```dart
class FikoYTCoreService {
  static FikoYTEventSystem events = FikoYTEventSystem();
  static GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
  static FikoYTServiceSettings serviceSettings = FikoYTServiceSettings();

  // Servis Yöneticisi
  static final ServisYoneticisi servisler = ServisYoneticisi();
  static final Map<String, Object> globals = {};

  // Socket.io Bağlantısı
  static late IO.Socket socket;
  static Rx<bool> wsBagli = Rx<bool>(false);
  static Rx<bool> internetBagli = Rx<bool>(false);
}
```

### 2. Servis Yönetim Deseni

**ServisYoneticisi** - Dependency Injection pattern'i ile servis yönetimi:

```dart
class ServisYoneticisi {
  final Map<Type, dynamic> _servisler = {};

  T? getServis<T>() => _servisler[T] as T?;
  void setServis<T>(T servis) => _servisler[T] = servis;
}
```

### 3. Uygulama Başlatma Deseni

Her uygulama `FikoYTCoreService.init()` ile başlatılır:

```dart
void main() async {
  HttpOverrides.global = HttpSSlIptalUzerineYaz();

  await FikoYTCoreService.init(
    settings: FikoYTServiceSettings(
      appSettings: FikoYTAppSettings(
        uygulamaIsmi: "FikoYT Akçalı",
        routes: routes,
        title: "FikoYT Akçalı",
        firstRouteUrl: "/finans/ana-sayfa",
      ),
      fikoytWebSocketUrl: "https://fikoyt.com:9000",
      fikoytServerUrl: "https://fikoyt.com:9000",
      fikoytServerIstekOnEk: "/fapiv1/fikoyt.com.",
      connectWebSocket: true,
    ),
  );

  await FikoYTCoreService.uygulamaCalistir();
}
```

## 📦 State Management

### 1. GetX Kullanımı

Tüm uygulamalar **GetX** state management kullanır:

```dart
dependencies:
  get: ^4.6.6  // fikoyt_akcali
  get: any     // fikoyt_mesaici ve diğerleri
```

**State Management Pattern'i:**
- **Controllers:** GetX controller ile state yönetimi
- **Services:** Servis katmanı ile business logic ayrımı
- **Bindings:** Dependency injection için GetX binding

### 2. Reactive Variables

```dart
// Core Service'de reactive değişkenler
static Rx<Brightness> parlaklik = Brightness.light.obs;
static Rx<bool> wsBagli = Rx<bool>(false);
static Rx<bool> internetBagli = Rx<bool>(false);

// Controller içinde kullanım
class FinansController extends GetxController {
  final RxList<CalismaKayit> kayitlar = <CalismaKayit>[].obs;
  final RxBool yukleniyor = false.obs;
}
```

### 3. Provider Desteği

İleri düzey state management için **Provider** da mevcut:

```dart
dependencies:
  provider: ^6.1.2
```

## 🧭 Navigasyon ve Routing

### 1. VRouter Kullanımı

Tüm uygulamalar **VRouter** ile modern routing kullanır:

```dart
dependencies:
  vrouter: ^1.2.1
```

**Route Structure:**
```dart
List<VRouteElement> routes = [
  VGuard(
    beforeEnter: (vRedirector) async {
      // Authentication guard
      final kullanici = await FikoYTService.aktifKullanici.kontrolEt();
      if (!kullanici) {
        vRedirector.push('/login');
      }
    },
    stackedRoutes: [
      VWidget(
        path: '/finans',
        widget: BasePageMesaiciView(),
        stackedRoutes: [
          VWidget(path: '/', widget: MesaiciHome()),
          VWidget(path: '/ayarlar', widget: MesaiciAyarlar()),
          VWidget(path: '/raporlar', widget: MesaiciRaporlar()),
        ],
      ),
    ],
  ),
];
```

### 2. Programmatic Navigation

```dart
// GetX ile navigasyon
Get.to(() => AyarlarSayfasi());
Get.off(() => AnaSayfa());
Get.offAll(() => LoginSayfasi());

// VRouter ile navigasyon
context.vRouter.push('/finans/ayarlar');
context.vRouter.pop();
```

## 🔌 Backend Entegrasyonu

### 1. HTTP Client - Dio

**HTTP Override SSL:**
```dart
class MyHttpOverrides extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext? context) {
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
  }
}
```

**Dio Configuration:**
```dart
dependencies:
  dio: ^5.5.0+1
  dio_cookie_manager: ^3.1.1
  cookie_jar: ^4.0.8
```

### 2. Socket.io Real-time Bağlantı

```dart
dependencies:
  socket_io_client: ^3.0.0

// WebSocket bağlantısı
static IO.Socket socket = IO.io(
  'https://fikoyt.com:9000',
  IO.OptionBuilder()
    .setTransports(['websocket'])
    .enableReconnection()
    .enableAutoConnect()
    .build(),
);

// Event handling
socket.onConnect((data) async {
  return FikoYTCoreService.ioEmit("FikoYT.sistem.io.cihaz.baglandi", {});
});
```

### 3. Request Manager Pattern

**FikoYTRequestManager** - Request queue ve retry mekanizması:

```dart
class FikoYTRequestManager {
  final FikoYTRequestQueue _queue = FikoYTRequestQueue();
  final FikoYTRequestEngine _engine = FikoYTRequestEngine();

  Future<FikoYTRequestResponse<T>> request<T>({
    required String endpoint,
    required FikoYTRequestType method,
    Map<String, dynamic>? data,
    Duration? timeout,
    int? retryCount,
  }) async {
    // Request queue ve retry logic
  }
}
```

### 4. Veritabanı Entegrasyonu

**Isar Database** - Local NoSQL database:

```dart
dependencies:
  isar: ^3.1.0+1
  isar_flutter_libs: ^3.1.0+1
  isar_generator: ^3.1.0+1
  build_runner: ^2.4.11

// Kullanım
@Collection()
class CalismaKayit {
  Id id = Isar.autoIncrement;
  DateTime? tarih;
  double? saat;
  String? not;
}
```

**MongoDB Direct Bağlantı:**

```dart
dependencies:
  mongo_dart: ^0.10.3
  bson: ^4.5.1
```

## 🎨 UI Component Library (fikoyt_ui)

### 1. Bileşen Yapısı

```
fikoyt_ui/lib/
├── ui/
│   ├── fikoyt_button.dart
│   ├── fikoyt_card.dart
│   ├── fikoyt_scaffold.dart
│   ├── fikoyt_dialog.dart
│   ├── themes/
│   │   ├── fikoyt_theme.dart
│   │   ├── fikoyt_light_theme.dart
│   │   └── fikoyt_dark_theme.dart
│   ├── yazi_kutulari/
│   ├── dialogs/
│   └── windows_baslik_cubugu/
├── core/
│   ├── fikoyt_translation.manager.dart
│   ├── fikoyt_device_info.dart
│   └── fikoyt_request_manager/
├── services/
│   └── fikoyt_core.service.dart
└── Extensions/
    ├── fiko_build_context.dart
    ├── fikoyt_string_ext.dart
    └── fiko_datetime.dart
```

### 2. Temel Bileşenler

**FikoYTButton:**
```dart
FikoYTButton(
  text: "Kaydet",
  onPressed: () => kaydet(),
  type: FikoYTButtonType.primary,
  loading: controller.yukleniyor.value,
)
```

**FikoYTScaffold:**
```dart
FikoYTScaffold(
  appBar: FikoYTAppBar(
    title: "Finans Yönetimi",
    showBackButton: true,
  ),
  body: AnaIcerik(),
  floatingActionButton: FikoYTFAB(
    onPressed: () => ekle(),
    icon: Icons.add,
  ),
)
```

### 3. Theme Management

**Tema Modu Enum:**
```dart
enum TemaModu {
  ACIK(0, "Açık Tema", "🔆", ThemeMode.light),
  KOYU(1, "Koyu Tema", "🌙", ThemeMode.dark),
  SISTEM(-1, "Sistem Teması", "⚡", ThemeMode.system);
}
```

## 🔧 Platforma Özel Özellikler

### 1. Android Özellikleri

**Permissions:**
```xml
<!-- İnternet ve ağ -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

<!-- Depolama -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- Ödeme -->
<uses-permission android:name="com.android.vending.BILLING"/>
```

**Background Service:**
```xml
<service
    android:name="id.flutter.flutter_background_service.BackgroundService"
    android:foregroundServiceType="specialUse"/>
```

**Intent Receiver:**
```xml
<intent-filter>
    <action android:name="com.fikoyt.akcali.komut" />
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
```

### 2. Windows Desktop Özellikleri

**Window Management:**
```dart
dependencies:
  bitsdojo_window: ^0.1.6
  flutter_acrylic: ^1.1.4

// Window başlangıç konfigürasyonu
if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
  doWhenWindowReady(() {
    appWindow.minSize = const Size(800, 600);
    appWindow.size = const Size(1200, 800);
    appWindow.alignment = Alignment.center;
    appWindow.show();
  });
}
```

### 3. Web Özellikleri

**Web Configuration:**
```yaml
flutter:
  web:
    generate: false
    image_path: "assets/core/icons/logo.png"
    background_color: "#hexcode"
    theme_color: "#hexcode"
```

## 📱 Platform Desteği ve Özellikler

### 1. Çoklu Platform Desteği

| Platform | Destek Durumu | Özel Özellikler |
|----------|----------------|----------------|
| **Android** | ✅ Full | Background services, notifications, intents |
| **iOS** | ⚠️ Limited | Notifications, basic features |
| **Windows** | ✅ Full | Window management, acrylic effects |
| **Linux** | ✅ Basic | Window management |
| **macOS** | ✅ Basic | Window management |
| **Web** | ✅ Full | PWA support, responsive UI |

### 2. Platforma Özel Plugin'ler

```dart
# Android için
dependencies:
  receive_intent: ^0.2.5           # Intent handling
  android_intent_plus: ^5.1.0      # Intent gönderme
  move_to_background: ^1.0.2      # Arka plana gönderme

# Windows için
dependencies:
  bitsdojo_window: ^0.1.6          # Window yönetimi
  flutter_acrylic: ^1.1.4          # Acrylic efektleri

# Tüm platformlar için
dependencies:
  flutter_background_service: ^5.0.7  # Background service
  flutter_local_notifications: ^17.2.2  # Bildirimler
  device_info_plus: any               # Cihaz bilgileri
  file_picker: ^8.1.2                 # Dosya seçici
```

## 🔔 Bildirim Sistemi

### 1. Notification Channels

```dart
notificationSettings: FikoYTNotificationSettings(
  channels: const [
    AndroidNotificationChannel(
      "Genel",
      "Genel",
      description: "Genel Bildirimler",
    ),
    AndroidNotificationChannel(
      "IseBaslamaBildirimleri",
      "İşe Başlama Bildirimleri",
      description: "İş saati geldiğinde bildirim",
    ),
    AndroidNotificationChannel(
      "IsBitirmeBildirimleri",
      "İş Bitirme Bildirimleri",
      description: "İş saati bittiğinde bildirim",
    ),
  ],
),
```

### 2. Background Service

```dart
// Background service başlatma
await FlutterBackgroundService().configure(
  androidConfiguration: AndroidConfiguration(
    onStart: onStart,
    autoStart: true,
    isForegroundMode: true,
    notificationChannelId: 'fikoyt_foreground',
    initialNotificationTitle: 'FikoYT Service',
    initialNotificationContent: 'Background service aktif',
    foregroundServiceNotificationId: 888,
  ),
  iosConfiguration: IosConfiguration(
    autoStart: true,
    onForeground: onStart,
    onBackground: onIosBackground,
  ),
);
```

## 🛠 Build Konfigürasyonları

### 1. Android Build

**build.gradle (app):**
```gradle
android {
    compileSdkVersion 34

    defaultConfig {
        applicationId "com.fikoyt.akcali"
        minSdkVersion 33
        targetSdkVersion 34
        versionCode 21
        versionName "2.0.4"

        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
}
```

### 2. Windows Build

**Windows Configuration:**
```yaml
flutter_launcher_icons:
  windows:
    generate: true
    image_path: "assets/core/icons/logo.png"
    icon_size: 48
```

### 3. Web Build

**Web Configuration:**
```yaml
flutter:
  web:
    generate: false
    image_path: "assets/core/icons/logo.png"
    background_color: "#1e1e1e"
    theme_color: "#2196f3"
```

## 📦 Asset Management

### 1. Asset Yapısı

```
assets/
├── core/
│   └── icons/
│       └── logo.png
├── mesaici/
│   ├── ilk-giris/
│   ├── ayarlar/
│   └── background/
└── translate/
```

### 2. Asset Kullanımı

```dart
// Asset path'leri
AssetImage("assets/core/icons/logo.png")
AssetImage("assets/mesaici/ilk-giris/bg.png")
```

## 🚀 Deployment Stratejileri

### 1. Android Deployment

**Google Play Store:**
- Minimum SDK: 33 (Android 13)
- Target SDK: 34 (Android 14)
- Signature: Release keystore ile imzalama
- ProGuard: Production için optimizasyon

**Build Commands:**
```bash
# Debug build
flutter build apk --debug

# Release build
flutter build apk --release --shrink

# App Bundle (Play Store için)
flutter build appbundle --release
```

### 2. Windows Deployment

**MSI Installer:**
```bash
# Windows executable
flutter build windows --release

# MSI package creation (manual process)
# Inno Setup veya WiX Toolset kullanılır
```

### 3. Web Deployment

**Static Hosting:**
```bash
# Web build
flutter build web --release --web-renderer canvaskit

# Output: build/web/
# CDN veya static hosting'e deploy edilir
```

## 🔒 Güvenlik

### 1. SSL Override

Geliştirme için SSL certificate bypass:

```dart
class MyHttpOverrides extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext? context) {
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
  }
}
```

### 2. API Security

**Authentication:**
- JWT token management
- Refresh token mechanism
- Device-based authentication

**Data Encryption:**
- Local data encryption (Isar)
- Secure HTTP communication
- Sensitive data obfuscation

## 🧪 Test Stratejisi

### 1. Unit Testing

```yaml
dev_dependencies:
  flutter_test:
    sdk: flutter
  mockito: ^5.4.2
  build_runner: ^2.4.11
```

### 2. Integration Testing

```dart
// Integration test örnekleri
void main() {
  testWidgets('Login flow test', (WidgetTester tester) async {
    // Test implementation
  });
}
```

## 📈 Performance Optimizasyonu

### 1. Build Optimizasyonu

```dart
// ProGuard rules
-keep class com.fikoyt.** { *; }
-keep class io.flutter.** { *; }

// Tree shaking kullanımı
flutter build apk --release --shrink
```

### 2. Memory Management

- GetX controller lifecycle management
- Image caching strategies
- Large data pagination
- Background service optimization

### 3. Network Optimizasyonu

- Request queuing system
- Retry mechanism with exponential backoff
- Data compression
- Cache management

## 🔗 External Dependencies

### Core Dependencies:
- **get**: State management ve navigation
- **dio**: HTTP client
- **vrouter**: Modern routing
- **isar**: Local database
- **socket_io_client**: Real-time communication

### Platform Dependencies:
- **bitsdojo_window**: Window management
- **flutter_acrylic**: Windows acrylic effects
- **receive_intent**: Android intent handling
- **flutter_background_service**: Background processing

## 📋 Best Practices

### 1. Code Organization
- Feature-based folder structure
- Shared library pattern
- Service layer separation
- Dependency injection

### 2. State Management
- GetX for reactive state
- Provider for complex state
- Local persistence with Isar
- Real-time updates with Socket.io

### 3. UI Development
- Responsive design
- Theme consistency
- Custom widget library
- Platform-specific adaptations

### 4. Backend Integration
- Centralized HTTP client
- Request retry mechanism
- Offline capability
- Real-time synchronization

---

**Son Güncelleme:** 2025-01-06
**Versiyon:** 1.0.0
**Yazar:** Claude Code Analysis