Flutter Flavors

Flutter Flavors позволяют настроить несколько сред (например, разработка, тестирование и продакшн) в вашем приложении Flutter. Это полезно, когда необходимо поддерживать разные конфигурации (например, различные URL API, флаги функций или темы приложения) для каждой среды.

Шаг 1: Определение Flavors в Android

  1. Откройте файл android/app/build.gradle: В Android-модуле можно определить flavors в файле build.gradle:
    android {
        ...
        flavorDimensions "default"
        productFlavors {
            dev {
                applicationIdSuffix ".dev"
                versionNameSuffix "-dev"
            }
            staging {
                applicationIdSuffix ".staging"
                versionNameSuffix "-staging"
            }
            prod {
                // Без суффиксов для продакшна
            }
        }
    }
    
  2. Обновите MainActivity для каждого Flavor: Обновите ваш MainActivity.java или MainActivity.kt, чтобы использовать flavor-специфичные классы MainActivity, если это необходимо.

Шаг 2: Определение Flavors в iOS

  1. Откройте ios/Runner.xcodeproj: В Xcode перейдите в настройки проекта и добавьте новые схемы для каждого flavor:

    • В верхнем меню выберите Product > Scheme > New Scheme и создайте схемы, такие как dev, staging и prod.
  2. Создайте конфигурации сборки:

    • Перейдите в Настройки проекта > Вкладка Info.
    • В разделе Configurations продублируйте конфигурации Debug и Release для каждого flavor.
  3. Настройте файлы Plist: Для каждого flavor вам понадобится отдельный файл Info.plist (например, Info-dev.plist, Info-staging.plist, и Info-prod.plist). Каждый plist файл может содержать различные конфигурации, такие как API ключи или URL.

Шаг 3: Доступ к flavor-специфичным переменным в Dart

  1. Измените pubspec.yaml: Добавьте пакет, например, flutter_dotenv или environment_config для управления переменными окружения, если это необходимо.
    dependencies:
      flutter:
        sdk: flutter
      flutter_dotenv: ^5.0.2
    
  2. Создайте файлы main_dev.dart, main_staging.dart и main_prod.dart: Настройте точки входа для каждого flavor с различными конфигурациями.
    void main() {
      // Специфическая для окружения настройка
      runApp(MyApp(flavor: 'dev'));
    }
    
  3. Доступ к информации о flavor в приложении: Внутри приложения вы можете проверить flavor следующим образом:
    class MyApp extends StatelessWidget {
      final String flavor;
    
      MyApp({required this.flavor});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: flavor == 'prod' ? 'Продакшн приложение' : 'Приложение для разработки',
          // Другие конфигурации...
        );
      }
    }
    

Шаг 4: Запуск Flavors

Чтобы запустить определенный flavor, используйте следующие команды:

  • Android:
    flutter run --flavor dev -t lib/main_dev.dart
    
  • iOS:
    flutter run --flavor dev -t lib/main_dev.dart
    

Эти шаги помогут настроить базовое управление flavors в вашем приложении Flutter, позволяя разделять конфигурации для различных сред.