Tek Flutter kod tabanından iki ayrı markalı uygulama (Green Application & Blue Application).
Mağazada farklı paket kimliği, isim ve launcher ikonu; uygulama içinde farklı tema, logo ve config.
Aynı kod tabanı — farklı flavor ile farklı marka:
| Green Application | Blue Application |
|---|---|
![]() |
![]() |
HomePage aynı widget; uygulama adı, tema, logo ve config flavor’a göre değişir.
| Alan | Green | Blue |
|---|---|---|
| Uygulama adı | Green Application | Blue Application |
| Tema | Yeşil (Material 3) | Mavi (Material 3) |
| Logo (UI + launcher) | green_logo.png |
blue_logo.png |
| Android/iOS paket suffix | .greenapplication |
.blueapplication |
| Örnek API URL | api.green.example.com |
api.blue.example.com |
main.dart ──► bootstrap.runFromDartDefine()
│
▼
AppFlavor.fromDartDefine() ← --dart-define=APP_FLAVOR=...
│
▼
FlavorConfig.create() ← Strategy + Registry
│
▼
AppConfig ──► App ──► HomePage
Native (paralel): --flavor greenapplication → Android productFlavors + iOS scheme / xcconfig.
lib/
├── main.dart # CI / production girişi
├── main_green_application.dart # İnce giriş (lokal)
├── main_blue_application.dart
├── bootstrap.dart
├── app/app.dart
├── core/
│ ├── config/
│ │ ├── app_flavor.dart
│ │ ├── app_config.dart
│ │ ├── flavor_config.dart
│ │ └── flavor/ # FlavorDefinition implementasyonları
│ ├── assets/app_assets.dart
│ └── theme/app_theme.dart
└── features/home/presentation/home_page.dart
assets/logo/ # Uygulama içi logolar
flutter_launcher_icons-*.yaml # Mağaza ikonları
android/app/build.gradle.kts # productFlavors
ios/Flutter/*-*.xcconfig # Bundle ID, display name, AppIcon
- Flutter SDK
^3.11.1 - Xcode (iOS), Android SDK (Android)
flutter pub get
dart run flutter_launcher_icons -f flutter_launcher_icons*Tek main.dart + APP_FLAVOR + native --flavor:
# Green
flutter run \
-t lib/main.dart \
--flavor greenapplication \
--dart-define=APP_FLAVOR=greenApplication
# Blue
flutter run \
-t lib/main.dart \
--flavor blueapplication \
--dart-define=APP_FLAVOR=blueApplicationAPP_FLAVOR değerleri AppFlavor enum adlarıyla aynı olmalı: greenApplication, blueApplication.
flutter run -t lib/main_green_application.dart --flavor greenapplication
flutter run -t lib/main_blue_application.dart --flavor blueapplicationVS Code: .vscode/launch.json içinde hazır konfigürasyonlar var.
Android (AAB):
flutter build appbundle \
-t lib/main.dart \
--flavor greenapplication \
--dart-define=APP_FLAVOR=greenApplicationAndroid (APK):
flutter build apk \
-t lib/main.dart \
--flavor greenapplication \
--dart-define=APP_FLAVOR=greenApplicationiOS (IPA):
flutter build ipa \
-t lib/main.dart \
--flavor greenapplication \
--dart-define=APP_FLAVOR=greenApplicationBlue için greenapplication / greenApplication değerlerini blueapplication / blueApplication ile değiştirin.
--flavor (küçük harf) |
Görünen ad | Paket suffix |
|---|---|---|
greenapplication |
Green Application | .greenapplication |
blueapplication |
Blue Application | .blueapplication |
- Android:
productFlavors+resValue→@string/app_name - iOS: Scheme
greenapplication/blueapplication,AppIcon-{flavor},APP_DISPLAY_NAME(xcconfig)
--flavor adı Android Gradle ve iOS scheme ile birebir aynı olmalı.
Runnerscheme değil,greenapplication/blueapplicationscheme ile çalıştırın.flutter clean→ simülatörden uygulamayı silin → yenidenflutter run.- Flavor Runner build’inde
ASSETCATALOG_COMPILER_APPICON_NAMExcconfig’i ezmemeli (AppIcon-greenapplicationkullanılır).
| Dosya | Kullanım |
|---|---|
assets/logo/green_logo.png |
UI (HomePage) + launcher kaynağı |
assets/logo/blue_logo.png |
UI + launcher kaynağı |
- UI:
FlavorDefinition.logoAsset→AppConfig→Image.asset - Launcher: flutter_launcher_icons
flutter_launcher_icons-greenapplication.yamlflutter_launcher_icons-blueapplication.yaml
Logo güncellemesi sonrası:
dart run flutter_launcher_icons -f flutter_launcher_icons*AppFlavorenum’a yeni değerlib/core/config/flavor/altındaFlavorDefinitionimplementasyonuFlavorConfig._definitionslistesine ekle- Android
productFlavors { create("...") { ... } } - iOS: build configuration + scheme +
*-Debug.xcconfigdosyaları assets/logo/<marka>_logo.pngflutter_launcher_icons-<flavor>.yaml+ icon generate- CI:
--flavor <flavor>+--dart-define=APP_FLAVOR=<EnumAdı>


