Собственные действия
Custom Action отличается от собственной функции тем, что всегда возвращает Future. Отсюда область применения: всё, что выполняется не мгновенно, — запрос к базе, вызов API, работа с файлом. Здесь же подключаются сторонние пакеты с pub.dev.
Future во Flutter — это обещание вернуть значение или ошибку когда-нибудь позже. Future<T> означает, что рано или поздно придёт значение типа T. Если действие возвращает String, его сигнатура будет Future<String>.
Где применяются
- Запросы к базе — сложная выборка или обновление данных.
- Вызовы API — асинхронные HTTP-запросы и разбор ответов.
- Работа с файлами — чтение и запись.
- Сторонние пакеты — например, подключение внешней аналитики.
Использование
Написанное, сохранённое и скомпилированное действие становится доступно в потоке действий наравне со встроенными.
В примере действие executeSearch принимает аргумент searchItem — строку из поля поиска на главной странице магазина.
Результат действия
В примере у действия включён 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, обратные вызовы и зависимости pubspec — в общем руководстве.