Ошибки в собственных действиях

инфо
Что нужно заранее
  • Общее понимание того, как устроены собственные действия.
  • Проект с уже созданным собственным действием.

Собственные действия дают полную свободу — и ровно поэтому ломаются чаще остального. Ниже чек-лист, по которому стоит пройтись.

Прочитайте текст ошибки. Сообщение из Test Mode, компиляции или локальной сборки почти всегда указывает на причину.

Имя действия

Имя в настройках должно совпадать с именем функции в коде.

Несовпадение имени действия и функции

совет

Кнопка Add Boilerplate Code генерирует заготовку с уже правильным именем.

Импорты и аргументы

  • Все нужные импорты на месте.
  • Аргументы описаны и в настройках действия, и в коде.

Список аргументов собственного действия

Типичные расхождения:

  • аргумент есть в коде, но не описан в панели настроек;
  • аргумент помечен как nullable в настройках, но в коде тип не допускает null.

Что делать: привести настройки и код в соответствие вручную или воспользоваться Add Boilerplate Code. В веб-версии копируйте из заготовки только нужное — в десктопной она может заменить весь код.

Совпадающие имена

Не называйте аргумент так же, как само действие.

Конфликт имени действия и аргумента

Зарезервированные слова

Аргумент нельзя называть ключевым словом Dart: abstract, else, import, show, as, enum, in, static, this. FlutterFlow обычно предупреждает, но не всегда.

Тип возвращаемого значения

Функция должна возвращать ровно тот тип, что указан в настройках.

Несовпадение типа возвращаемого значения

Импорты внутренних библиотек

Если импортируете что-то вроде ../../flutterflow, при необходимости включите Exclude from compilation.

Зависимости pubspec

Зависимости должны быть объявлены и совместимы с FlutterFlow.

Объявление зависимостей

На что смотреть:

  • конфликты версий — сверяйтесь с pub.dev;
  • несколько версий одного пакета;
  • конфликт с пакетами, которые FlutterFlow подключает сам.

Конфликт версий зависимостей

Сообщение о несовместимости пакетов

Ошибки в коде

Работа с null:

int example = passingIntWhichMayBeNullable ?? 0;

Явное приведение типов:

String str = "5";
int result = int.parse(str);

Пригодятся и .toString(), .toInt(), .toDouble().

И проверьте, не передаёте ли вы одиночное значение туда, где ждут список, — или наоборот.

Exclude from Compilation

С включённой опцией код не проверяется при сборке, но выполняется при тестировании. Ошибка в нём всплывёт неожиданно.

Опция Exclude from Compilation

Дублирование типов данных

Не описывайте в коде типы и структуры, которые уже есть в панели схемы данных.

Дублирование типа данных

Типы в колбэках

Действие-колбэк должно возвращать тот тип, который от него ждут.

Тип возвращаемого значения колбэка

инфо
По теме
совет

Если непонятно, в чём дело, сгенерируйте заготовку заново и сравните её со своим кодом. Настройки и код должны описывать одно и то же.

перевод официальной документации FlutterFlow

обновлено

ESC