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

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

заметка

В новом проекте FlutterFlow есть одна среда — Production.

инфо
Dev или Staging
  • Dev — разработка и проверка новых функций, не задевая боевые данные.
  • Staging — репетиция боевой среды перед выкаткой, тоже в изоляции от неё.

Это распространённая практика, но названия сред вы задаёте сами — под свой процесс.

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

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

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

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

Значения среды подставляются в код приложения в зависимости от того, какая среда выбрана.

Например, в интернет-магазине значение apiUrl может указывать на разные адреса API для Development, Staging и Production. Новые функции проверяются на тестовом API, а боевые заказы идут своим путём.

Как использовать значение среды

Разберём на примере apiUrl:

совет
Что попадает в код

При переключении среды FlutterFlow генерирует код именно под неё — для сессий Test и Run Mode, Local Run, выгрузки кода и выкатки. Ошибки проекта в разных средах тоже могут отличаться.

В сгенерированном коде появляются:

  • environment.json — значения среды, заданные в FlutterFlow;
  • класс FFDevEnvironmentValues — синглтон с инициализацией и геттерами для этих значений. Обращаться к ним можно и из собственного кода, см. примеры собственного кода.

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

Значение можно пометить приватным, если оно содержит то, чему не место в клиентском коде.

внимание

Приватные значения не попадают в скомпилированное приложение и не видны пользователям. Но если приватное значение используется в приватном вызове API, который идёт через сгенерированную облачную функцию, оно окажется в коде этой функции. При выгрузке кода или отправке проекта в GitHub такие файлы нужно просматривать и, если в них есть секреты, исключать через .gitignore.

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

совет
Что попадает в код

Приватных значений нет ни в environment.json, ни в геттерах класса FFDevEnvironmentValues.

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

У каждой среды проекта может быть свой проект Firebase или Supabase. Development, Staging и Production не пересекаются между собой, и данные каждой стадии живут отдельно.

Переключатель сред в настройках проекта FlutterFlow

Пока для среды не настроен Firebase или Supabase, тестировать приложение в ней нельзя. На остальные среды это не влияет: переключитесь обратно на Production и продолжайте работать, пока настройка новой среды не закончена.

Firebase

Для каждой среды нужен отдельный проект в консоли Firebase. Переключите среду на странице настроек Firebase и пройдите ручное подключение проекта Firebase для каждой из них.

Выбор среды на странице настроек Firebase

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

инфо

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

Supabase

Для каждой среды нужен отдельный проект Supabase.

Заведите значения среды вроде SupabaseAPIURL и SupabaseAnonKey и укажите их в настройках Supabase. Выглядит это так:

заметка

Схемы в разных средах Supabase лучше держать одинаковыми. Начинать удобно с Get Schema из боевой среды.

Частые вопросы

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

Никак — и это не задача сред. Development Environments нужны для того, чтобы подключать разные бэкенды, а не для переноса изменений.

Новые функции разрабатывают через ветки: работаете в отдельной ветке с выбранной средой разработки, проверяете, вливаете ветку в main и переключаетесь на Production.

Используются ли под капотом flavors из Flutter?

Нет. FlutterFlow генерирует код под выбранную среду — для сессий Test и Run Mode, Local Run, выгрузки кода и выкатки.

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

Настройки выкатки задаются для каждой среды отдельно на странице публикации: для мобильных — своё имя пакета, для веба — свой адрес сайта. Дальше выкатка обычная. Подробности — на отдельной странице.

перевод официальной документации FlutterFlow

обновлено

ESC