Перейти к основному содержимому

Среда разработки

Среда разработки в FlutterFlow позволяет настраивать несколько сред для ваших приложений, таких как Development, Staging и Production. Для каждой среды вы можете создавать специфичные для неё значения и базы данных. Это позволяет легко переключаться на разные бэкенды в зависимости от этапа жизненного цикла разработки.

примечание

По умолчанию каждый проект FlutterFlow начинается со среды Production.

Когда использовать среды разработки и staging
  • Среда разработки: Используйте для тестирования и разработки новых функций без влияния на производственные данные.
  • Среда staging: Используйте для имитации производственной среды перед запуском; она изолирована от реальных производственных данных.

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

Создание и переключение сред разработки

Вы можете создавать и переключать среды на странице Dev Environments в App Settings. Текущую выбранную среду всегда можно увидеть в левом верхнем углу проекта.

Выбранная среда используется для генерации соответствующего кода приложения при запуске, тестировании, развертывании или экспорте. Между средами изменяются только проект Firebase или переменные, связанные с значениями среды.

Значения среды

Значения среды можно использовать для динамического изменения частей кода вашего приложения в зависимости от используемой среды.

Например, в приложении для электронной коммерции вы можете определить значение среды apiUrl, которое указывает на разные URL API для разработки, staging и производства. Это позволяет тестировать новые функции без влияния на живую производственную среду, где обрабатываются реальные заказы клиентов.

Использование значения среды

Давайте рассмотрим пример создания и использования apiUrl:

Генерируемый код

При переключении на среду FlutterFlow генерирует код, специфичный для этой среды, для любого из следующих взаимодействий:

  • Сессии в режиме Test / Run
  • Local Run
  • Экспорт кода
  • Развертывание

В зависимости от выбранной среды вы также можете сталкиваться с разными ошибками проекта.

В генерируемом коде FlutterFlow создаёт два файла:

  • environment.json — хранит значения среды, определённые пользователем в FlutterFlow.
  • Класс FFDevEnvironmentValues — синглтон-класс, который содержит единственный экземпляр объекта FFDevEnvironmentValues. Он включает логику инициализации и геттеры для доступа к этим значениям среды. Их также можно ссылаться в ваших пользовательских ресурсах кода. См. Common Custom Code Examples.

Приватные значения среды

Вы можете пометить значения среды как приватные, если они содержат конфиденциальную информацию, которая не должна раскрывать в клиентском коде. Приватные значения среды не включаются в генерируемый код.

В настоящее время единственный способ использовать приватное значение среды — это как переменную в приватном вызове API. Поскольку приватные вызовы API маршрутизируются через Cloud Function, значение переменной остаётся скрытым от любых клиентских запросов, выполняемых приложением.

Генерируемый код

Для приватных значений среды генерируемый код не включает эти значения в файл environment.json, и в классе FFDevEnvironmentValues не создаётся логика геттеров.

Настройка Firebase или Supabase для каждой среды

Один проект FlutterFlow может иметь несколько сред, каждая из которых сопоставлена со своим проектом Firebase или Supabase. Это гарантирует, что среды вроде Development, Staging и Production остаются независимыми, предоставляя вам лучший контроль над данными и поведением приложения на разных этапах разработки.

flutterflow-environment

Вы должны завершить настройку Firebase или Supabase для среды перед тем, как тестировать приложение в этой среде. Однако это не мешает продолжать запускать и тестировать приложение в других средах. Просто переключитесь обратно на Production, и вы сможете продолжить тестирование, пока завершаете настройку новой среды.

Настройка Firebase

Если ваш проект использует Firebase, вам нужно создать отдельный проект Firebase в консоли Firebase для каждой среды. Затем вы можете изменить выбранную среду на странице настроек Firebase (см. ниже) и следовать шагам для ручной настройки проекта Firebase для каждого из них.

firebase-dev-env-config.png

Кроме того, вы должны вручную настроить правила Firestore и коллекции для новой среды.

к сведению

Данные, которые вы добавляете в Firebase через Content Manager, специфичны для проекта Firebase и среды, которые вы выбрали.

Настройка Supabase

Если ваш проект использует Supabase, вам нужно настроить новый проект Supabase для каждой среды.

Создайте специфичные для среды значения, такие как SupabaseAPIURL и SupabaseAnonKey, а затем настройте свойства Supabase, чтобы они указывали на эти newly created values. Ниже приведён пример того, как это будет выглядеть.

примечание

Рекомендуется сохранять схемы согласованными между разными средами Supabase. Также рекомендуется Get Schema из среды Production и строить на её основе.

FAQ

Как передать код из одной среды в другую?

Важно отметить, что функция Development Environments в FlutterFlow в основном предназначена для настройки разных бэкендов для тестирования

Если вы разрабатываете новые функции, рассмотрите использование Branching. Вы можете разрабатывать и тестировать новые функции на новой ветке, выбрав среду разработки. После тестирования вы можете слить ветку в main и переключиться на среду Production, чтобы запустить в продакшене.

Используете ли вы Flutter flavors под капотом?

Нет, FlutterFlow не использует Flutter flavors. Вместо этого он генерирует код на основе среды, выбранной в FlutterFlow. Код, специфичный для среды, генерируется и применяется для следующих действий:

  • Сессии в режиме Test / Run
  • Local Run
  • Экспорт кода
  • Развертывание

Как развернуть приложения для разных сред?

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