Yapay zeka tabanlı görsel üretim uygulaması, modern yazılım mimarisi prensipleri ve en güncel Flutter teknolojileri kullanılarak geliştirilmiştir.
- Flutter SDK: 3.27.3 (stable channel)
- Dart SDK: 3.6.1
- Minimum Dart SDK: >=3.0.0 <4.0.0
- Android:
- Compile SDK: Flutter default (34)
- Min SDK: Flutter default (21)
- Target SDK: Flutter default (34)
- iOS:
- Deployment Target: iOS 11.0
- Xcode: 14.0 veya üstü
-
flutter_riverpod: ^2.4.9
- Bağımlılık enjeksiyonu ve state yönetimi için tercih edildi
- Widget ağacından bağımsız state yönetimi sağlar
- Test edilebilirliği artırır
- Provider'lar arasında bağımlılık yönetimini kolaylaştırır
-
freezed: ^2.4.6
- İmmutable state yönetimi için kullanıldı
- Union types ile hata yönetimini güçlendirir
- Boilerplate kod yazımını minimize eder
- Code generation ile type-safety sağlar
-
envied: ^0.5.3
- Güvenli environment variable yönetimi
- API anahtarlarının güvenli saklanması
- Build time'da environment değişkenlerinin derlenmesi
-
dio: ^5.4.0
- HTTP client
- İnterceptor desteği
- Form data ve multipart desteği
Uygulama, Clean Architecture prensiplerine uygun olarak katmanlı bir yapıda geliştirilmiştir. Bu yapı, kodun test edilebilirliğini, sürdürülebilirliğini ve ölçeklenebilirliğini artırır.
lib/
├── core/ # Temel altyapı kodları
│ ├── enums/ # Enum tanımlamaları
│ ├── error/ # Hata yönetimi
│ └── network/ # Ağ katmanı
├── features/ # Özellik modülleri
│ └── image_generation/
│ ├── data/ # Veri katmanı
│ │ ├── models/ # Data modelleri
│ │ └── repositories/
│ ├── domain/ # İş mantığı katmanı
│ │ └── repositories/
│ └── presentation/ # Sunum katmanı
│ ├── pages/ # Sayfa widget'ları
│ ├── providers/# State yönetimi
│ └── widgets/ # Yeniden kullanılabilir widget'lar
- Uygulama genelinde kullanılan temel yapıları içerir
- Network istekleri için standart bir yapı sunar
- Hata yönetimi için özelleştirilmiş sınıflar barındırır
- API entegrasyonları
- Model sınıfları
- Repository implementasyonları
- Local storage yönetimi
- Repository arayüzleri
- Business logic
- Entity sınıfları
- UI bileşenleri
- State management
- Navigation logic
Riverpod tercih edilmesinin sebepleri:
- Dependency Injection yetenekleri
- Auto-disposing mekanizması
- Provider override özelliği ile kolay test yazımı
- AsyncValue ile asenkron state yönetimi
- Provider reference kontrolü ile memory leak önleme
@freezed
class ImageGenerationState with _$ImageGenerationState {
const factory ImageGenerationState({
required String prompt,
required String imageUrl,
required bool isLoading,
required RequestStatus status,
String? errorMessage,
}) = _ImageGenerationState;
}Uygulama, API anahtarlarını .env dosyasında saklar ve bu dosya version control sistemine eklenmez.
# .env
OPENAI_API_KEY=your_api_key_here
DEEP_SEEK_API_KEY=your_api_key_here
STABLE_DIFFUSION_API_KEY=your_api_key_here- API anahtarları build time'da şifrelenir
- Network katmanında interceptor'lar ile güvenlik headerları eklenir
- SSL pinning implementasyonu
- Flutter SDK'yı yükleyin:
flutter --version- Bağımlılıkları yükleyin:
flutter pub get- Environment dosyasını oluşturun:
cp .env.example .env- Code generation'ı çalıştırın:
flutter pub run build_runner build --delete-conflicting-outputs- Maksimum görsel boyutu: 1024x1024
- Format: PNG
- Prompt optimizasyonu
- Model versiyonu: v2.1
- Sampling metodu: Euler a
- CFG scale: 7.5
- Model: DeepSeek-2.0
- Sampling steps: 30
- Negative prompt desteği
- Repository katmanı testleri
- Business logic testleri
- State management testleri
- UI bileşenlerinin test edilmesi
- State değişimlerinin doğrulanması
- End-to-end senaryoların test edilmesi
- API entegrasyonlarının doğrulanması
Mock data kullanımı:
final repository = ImageGenerationRepository(useMockData: true);- HTTP durum kodlarına göre özelleştirilmiş hata mesajları
- Kullanıcı dostu hata gösterimi
- Retry mekanizması
- Offline mod desteği
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.