Блоки действий
Блок действий (Action Block) — набор действий, решающий одну задачу и вызываемый из разных мест приложения. Если один и тот же набор шагов повторяется в проекте, ему самое место в блоке: сложная логика разбивается на понятные части, и правится потом в одном месте.
У блоков есть область видимости — от неё зависит, откуда блок доступен и к каким переменным обращается:
| Уровень блока | Где доступен | К каким переменным обращается |
|---|---|---|
| Уровень приложения | Во всём приложении. Создать такой блок можно с любой страницы или из компонента, и оттуда же его можно открыть и изменить. | Только переменные своей области — например, переменные App State. |
| Уровень страницы | Только на той странице, где создан. | Переменные состояния страницы и переменные уровнем выше — App State. |
| Уровень компонента | Только в том компоненте, где создан. | Переменные состояния компонента, а также переменные страницы и App State. |
Часть действий в блоках не поддерживается и по умолчанию скрыта в редакторе: например, действия из категории Firebase Authentication, Start Periodic Action, Upload Data и некоторые другие.
Как устроен блок
Поток внутри блока собирается так же, как обычная последовательность действий. Отличий два: у блока выбирается область видимости и описываются входные и выходные значения.
Выбор области видимости
Блок уровня приложения создаётся из свойств действий любого виджета и доступен везде. Блоки уровня страницы и компонента остаются там, где созданы.
Выбор делается в выпадающем списке при создании блока — исходя из того, где он вам понадобится.

Параметры блока
Блоку доступны переменные его области видимости — скажем, блоку уровня страницы видны переменные состояния этой страницы. Но иногда логике нужны данные извне: их передают параметрами, которые описываются при создании блока в редакторе действий.
Разберём на примере списка избранного в магазине. Локальный список хранится в переменной App State localWishlist, а блок addToWishlist принимает параметр productId и добавляет товар в этот список.
Возвращаемое значение
Блок может возвращать результат. Например, на странице корзины блок уровня компонента getTotalCost считает итоговую стоимость всех товаров и возвращает число. Тип возвращаемого значения задаётся в редакторе действий.