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

Пользовательские действия

Пользовательские действия в FlutterFlow отличаются от пользовательских функций тем, что всегда возвращают Future. Это делает их особенно полезными для сложных операций, которые могут занять время, например, запросов к базе данных или вызовов функций, возвращающих результаты с задержкой. Кроме того, пользовательские действия удобны, когда нужно добавить стороннюю зависимость из pub.dev, чтобы расширить возможности приложения с помощью внешних пакетов.

Что такое Future?

Futures в Flutter представляют асинхронную операцию, которая в будущем вернёт значение или ошибку. Future<T> указывает, что future в итоге предоставит значение типа T. Таким образом, если возвращаемое значение — это String, пользовательское действие вернёт Future<String>, а значение String будет выведено в какой-то момент в будущем.

Основные сценарии использования

  • Запросы к базе данных: Выполняйте сложные запросы для получения или обновления данных в базе данных.
  • Вызовы API: Отправляйте асинхронные HTTP-запросы к внешним API и обрабатывайте ответы.
  • Операции с файлами: Управляйте операциями чтения или записи файлов, которые требуют времени на выполнение.
  • Интеграция с внешними сервисами: Включайте внешние пакеты и зависимости для расширения функциональности, например, пакет внешней аналитики.

Использование пользовательского действия

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

В следующем примере у нас есть пользовательское действие под названием executeSearch, которое принимает аргумент searchItem — строку поиска из поля TextField поиска в HomePage приложения электронной коммерции.

Использование результата пользовательского действия

В предыдущем примере мы включили Return Value пользовательского действия, чтобы оно возвращало List<Product>, если ключевое слово поиска валидно. С этим изменением код изменится с

Future executeSearch(String searchItem) async {
// Add your function code here!
}

на

Future<List<ProductStruct>> executeSearch(String searchItem) async {
// Add your function code here!
}

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

Ищете другие свойства пользовательских действий?

Чтобы узнать больше о настройках пользовательских действий, таких как переключатель Exclude From Compilation, переключатель Include Build Context, и другие свойства, например, Callback Actions, Pubspec Dependencies, ознакомьтесь с этим полным руководством.