Что такое конфигурация приложения в Flutter?

«Что такое конфигурация приложения в Flutter?» — вопрос из категории Архитектура, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конфигурация приложения в Flutter — это набор параметров и настроек, которые определяют его поведение в разных средах (разработка, тестирование, продакшн) и на разных платформах.

Основные компоненты конфигурации:

  1. Управление переменными окружения:

    • Флаги --dart-define: Самый распространённый нативный способ.
      flutter run --dart-define=API_BASE=https://api.dev.com --dart-define=ENV=dev
    • Чтение в коде:
      const apiBase = String.fromEnvironment('API_BASE', defaultValue: 'https://default.api.com');
      const isProduction = bool.fromEnvironment('dart.vm.product'); // true в AOT-сборке
  2. Конфигурационные файлы:

    • pubspec.yaml — конфигурация зависимостей, метаданные приложения, assets.
    • Пакеты вроде flutter_dotenv для загрузки переменных из .env-файлов.
  3. Платформо-специфичные настройки:

    • Android: android/app/src/main/AndroidManifest.xml (разрешения, настройки активности).
    • iOS: ios/Runner/Info.plist (разрешения, настройки приложения).
  4. Архитектурные подходы:

    • Создание классов-конфигураций для разных сред.
      
      abstract class AppConfig {
      String get apiBaseUrl;
      bool get enableLogging;
      }

    class DevConfig implements AppConfig { @override String get apiBaseUrl => 'https://dev.api.com'; @override bool get enableLogging => true; }

    class ProdConfig implements AppConfig { @override String get apiBaseUrl => 'https://api.com'; @override bool get enableLogging => false; } // Инициализация в main() в зависимости от флагов

Правильная настройка конфигурации позволяет безопасно управлять API-ключами, эндпоинтами и флагами функциональности.