🧮 Суммирование данных в Firebase Firestore
Во FlutterFlow нет прямой возможности выполнить Aggregation Query (SUM) для Firestore штатными средствами. Мы решаем это через Data Query и Custom Function.
🛠 Пошаговый алгоритм
Шаг 1: Создание Custom Function sumList
Эта функция принимает список чисел и возвращает их сумму.
- Аргументы:
list(List). - Возвращаемое значение:
Double.
double sumList(List<double>? list) {
if (list == null || list.isEmpty) {
return 0.00;
}
return list.fold(0.00, (sum, num) => sum + num);
}Шаг 2: Получение данных (Backend Query)
- На странице добавьте Backend Query (Collection Query) к нужной коллекции.
- Обязательно используйте фильтры, чтобы не загружать лишние данные (это экономит бюджет Firebase!).
- Назовите результат запроса (Action Output Name), например,
allInvoices.
Шаг 3: Обновление Page State
- В событии On Page Load (после выполнения запроса) добавьте действие Update Page State.
- Выберите вашу переменную (например,
totalAmount). - В качестве значения выберите Custom Function →
sumList. - В качестве аргумента функции передайте результат запроса:
allInvoices→ Map List Item → Выберите поле (например,amount).
📺 Видео-туториалы
- NoCodeFlutter: Firebase Aggregation Queries — Видео-разбор метода.
- RapidMVP: Sum values in AppState — Альтернативный метод через App State.
Смотрите также: Индекс Firebase