Действия Firestore
Действия Firestore создают, читают, изменяют и удаляют записи в коллекциях.
- Понимание того, как устроена структура базы Firebase.
- Пройденные шаги подключения Firebase.
- Созданная коллекция.
Какие бывают действия
- Create Document — создаёт запись в коллекции.
- Read Document — читает документ по ссылке.
- Update Document — обновляет поля существующего документа.
- Delete Document — удаляет запись.
- Query Collection — выбирает записи из коллекции.
Create Document [Действие]
- Выберите виджет — например, кнопку.
- В Properties Panel справа откройте Actions и нажмите Open — откроется Action Flow Editor.
- Нажмите + Add Action.
- Справа найдите и выберите Firestore > Create Document.
- В поле Collection укажите коллекцию.
- В секции Set Fields нажмите + Add Field.
- Откройте поле, чтобы взять значение из виджета:
- в Value Source выберите From Variable;
- нажмите UNSET и выберите Widget State > имя нужного TextField.
- Так же добавьте остальные поля.
- По умолчанию у документа генерируется случайный ID. Нужен свой — включите тумблер Custom ID.
Read Document [Действие]
Иногда данные документа нужны в ответ на действие пользователя — скажем, показать имя, аватар и описание профиля после нажатия кнопки.
Где ещё это пригодится:
- подгрузить данные автора поста или комментария;
- получить название, цену и наличие товара по ID из корзины;
- в приложении для путешествий — раскрыть города, на которые ссылается документ страны.
Разберём на примере: показываем данные пользователей, оставивших отзыв о месте.
Коллекции устроены так:

Как добавить действие:
- Выберите виджет — например, кнопку.
- В Properties Panel справа откройте Actions и нажмите Open.
- Нажмите + Add Action.
- Справа найдите и выберите Firestore > Read Document.
- В Select Reference to Read укажите ссылку на документ.
- Задайте Action Output Variable Name — в неё попадут данные документа.
- Теперь по этой переменной выводят данные. Например, для текста: Text > Properties Panel > Text > Set from Variable > [имя переменной] > нужное поле.
Update Document [Действие]
- Выберите виджет — например, кнопку.
- В Properties Panel справа откройте Actions и нажмите Open.
- Нажмите + Add Action.
- Справа найдите и выберите Firestore > Update Document.
- Укажите ссылку на документ — она и определяет, какую именно запись обновлять.
- В секции Set Fields нажмите + Add Field.
- Откройте поле, чтобы взять значение из виджета:
- в Value Source выберите From Variable;
- нажмите UNSET и выберите Widget State > имя нужного TextField.
- Так же добавьте остальные поля.
Delete Document [Действие]
- Выберите виджет — например, кнопку.
- В Properties Panel справа откройте Actions и нажмите Open.
- Нажмите + Add Action.
- Справа найдите и выберите Firestore > Delete Document.
- Укажите ссылку на документ, который нужно удалить.
Query Collection [Действие]
Запрос вручную нужен там, где данные забирают в ответ на конкретное действие — нажатие кнопки, отправку формы. То же самое, когда приложение под разными условиями показывает разные данные: скажем, отдельные наборы задач для администратора и для участников команды.
- Выберите виджет — например, кнопку.
- В Properties Panel справа откройте Actions и нажмите Open.
- Нажмите + Add Action.
- Справа найдите и выберите Firestore > Query Collection.
- Выберите Collection.
- Задайте Query Type:
- List of Documents — список документов, который можно отфильтровать и отсортировать.
- Single Document — один документ, обычно по его идентификатору.
- Count — только количество подходящих документов, без самих данных. Быстрый способ узнать, сколько записей попадает под фильтр.
- При необходимости задайте фильтры и сортировку.
- Укажите Action Output Variable Name — в эту переменную попадёт результат.
- По этой переменной можно построить элементы ListView через generate children from variable.
- Осталось вывести данные: Text > Properties Panel > Text > Set from Variable > [имя переменной] > нужное поле.
Фильтрация
Фильтр отбирает документы по условию — например, только незавершённые задачи в общем списке.
- В свойствах действия Query Collection пролистайте вниз и нажмите + Filter.
- В Field Name нажмите Unset и выберите поле, по которому фильтруете.
- В выпадающем списке Relation выберите отношение.
- Задайте Value и нажмите Confirm.
- Отношение подбирают под задачу. Показать только незавершённые задачи: поле
isDone, отношение Equal To, значение False. - Показать пользователей старше 30: поле
Age, отношение Greater Than, значение 30. - Несколько фильтров объединяются операторами AND и OR — так собираются более сложные условия.
Сортировка
Порядок задаётся там же — скажем, задачи по сроку выполнения.
- В свойствах действия Query Collection пролистайте вниз и нажмите + Order By.
- В Field Name нажмите Unset и выберите поле сортировки.
- В выпадающем списке Order выберите Increasing или Decreasing и нажмите Confirm.
Чтобы задачи шли по сроку, поставьте Field Name — поле с датой, Order — Increasing.
Если в запросе одновременно есть фильтрация и сортировка, нужен индекс — без него FlutterFlow выдаст ошибку. Как выкатить индексы.
Пакетная запись
Обычно каждая операция с базой — отдельный запрос и отдельный поход на сервер. Пакетная запись собирает несколько операций в один запрос: либо выполняются все, либо ни одна. Данные не остаются в наполовину обновлённом состоянии, если что-то пошло не так.
- Подробности — в документации Firestore Batch Write.
- Если тема новая, начните с этого ролика.
Пример: в интернет-магазине после оформления заказа нужно уменьшить остаток товара и создать документ в коллекции «orders». Пакетная запись выполнит обе операции разом.
Включается она так: соберите в одном потоке несколько действий Firestore — в любом сочетании — и включите Batch Firestore Writes в правом верхнем углу редактора действий.

Реакция на изменение данных
Действие можно запускать в момент изменения данных в коллекции. Например, в новостном приложении — показывать уведомление о свежей публикации:
Как это настроить:
- Убедитесь, что к виджету добавлен Query Collection или Document from Reference с выключенной опцией Single Time Query.
- На этом виджете откройте Action Flow Editor и выберите триггер On Data Change. Теперь действия сработают при любом добавлении, изменении или удалении данных.
- Добавьте нужное действие — показать уведомление, обновить интерфейс, подтянуть связанные данные.
На ListView вместе с этим триггером отключите Infinite Scroll.