Как использовать flavor во Flutter и почему это так важно

flautter flavors

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

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

Например, версия вашего приложения для разработки может использовать dev.api.myapp.com, тогда как производственная версия использует api.myapp.com. Вместо того чтобы жестко прописывать эти значения и вручную собирать приложение для каждой среды, вы можете использовать флейворы, чтобы задавать эти значения в качестве конфигураций во время сборки, ускоряя процесс разработки.

Использование флейворов во Flutter с помощью flutter_flavorizr

flutter_flavorizr упрощает создание и управление множественными флейворами в приложениях на Flutter. Он автоматизирует процесс конфигурации как для Android, так и для iOS, помогая разработчикам поддерживать единообразие конфигурации и минимизировать время, затрачиваемое на ручную настройку. Как это сделать? Итак…

Шаг 1 — Установка flutter_flavorizr

Добавьте flutter_flavorizr в ваш файл pubspec.yaml в разделе dev_dependencies.

Шаг 2 — Настройка флейворов

Создайте новый файл с именем flavorizr.yaml в корне проекта и определите имена флейворов, затем запустите команду

flutter pub run flutter_flavorizr

для генерации необходимых файлов и конфигураций.

flavors:
  development:
    app:
      name: "MyApp DEV"
    android:
      applicationId: "com.example.myapp.dev"
    ios:
      bundleId: "com.example.myapp.dev"
    macos:
      bundleId: "com.example.myapp.dev"
  production:
    app:
      name: "MyApp"
    android:
      applicationId: "com.example.myapp"
    ios:
      bundleId: "com.example.myapp"
    macos:
      bundleId: "com.example.myapp"

Эта команда создаёт соответствующие файлы и каталоги для каждого флейвора, включая отдельные файлы main.dart и конфигурационные файлы.

Шаг 3 — Доступ к конфигурациям флейворов в коде

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

import 'package: flutter/material.dart';
import 'package:flutter_flavorizr/flutter_flavorizr.dart';

void main {
    runApp (MyApp) ;
}

class MyApp extends StatelessWidget {
  @override
  Widget build (BuildContext context) {
    final flavor = FlavorConfig.instance.name;

    return MaterialApp( 
      title: 'Flutter Flavors - $flavor',
      home: HomeScreen,
    );
  }
}

Шаг 4 — Сборка и запуск флейворов

Используйте следующие команды для сборки и запуска конкретного флейвора:

flutter run --flavor development -t lib/main_development.dart
flutter run --flavor production -t lib/main_production.dart

И всё готово!

Почему это важно?

При разработке в реальной среде необходимо быть быстрым и эффективным. Использование флейворов во Flutter предоставляет несколько ключевых преимуществ, которые делают его важным как для разработчиков, так и для бизнеса.

  • Упрощение процесса разработки: Флейворы позволяют поддерживать одну кодовую базу, адаптируя приложение под разные среды (разработка, промежуточное тестирование, производство) или рыночные сегменты (бесплатная, премиум версия). Это уменьшает сложность и трудозатраты, связанные с управлением отдельными кодовыми базами для каждой версии вашего приложения.
  • Повышение качества тестирования и контроля качества (QA): Флейворы позволяют создавать специфические конфигурации для различных сценариев тестирования. Вы можете иметь флейвор, который имитирует производственную среду, но использует промежуточный API. Это гарантирует, что ваша команда QA сможет тестировать приложение в условиях, максимально приближенных к реальной производственной среде.
  • Упрощение кастомизации: Флейворы позволяют легко включать или отключать функции в зависимости от целевой аудитории или рынка. Например, можно иметь флейвор с дополнительными функциями для премиум-пользователей, сохраняя упрощённую версию для бесплатных пользователей.
  • Упрощенная развертка и конфигурация: Управление различными конфигурациями, такими как API-эндпоинты, настройки темы или учетные данные сторонних сервисов, становится более эффективным с флейворами. Определяя эти настройки в централизованном конфигурационном файле, вы снижаете риск ошибок и обеспечиваете согласованность между средами.
  • Ускорение разработки: Инструменты, такие как flutter_flavorizr, значительно сокращают ручные усилия, необходимые для настройки и управления несколькими флейворами. Это позволяет разработчикам сосредоточиться больше на кодировании.
  • Подготовка к будущему: По мере роста приложения появляется необходимость поддержки дополнительных сред или рыночных сегментов. Использование флейворов с самого начала делает архитектуру вашего приложения более масштабируемой и адаптируемой в долгосрочной перспективе.

Спасибо за чтение! Теперь вы успешно настроили флейворы в своём проекте Flutter всего за несколько простых шагов. Для более глубоких вариантов настройки вы также можете адаптировать флейворы под свои сценарии. Удачного кодинга!

Источник: https://bilalrehman08.medium.com/how-to-use-flavor-in-flutter-and-why-its-important-for-you-0f53c71b59ff