Поиск причины сбоя
Общая инструкция: куда смотреть, когда проект FlutterFlow ведёт себя не так, как задумано. Ниже — четыре источника информации, от переменных в реальном времени до логов устройства.
Панель Debug info в Test Mode
Панель Debug info показывает все переменные приложения и их текущие значения в реальном времени. Не нужно бегать по проекту и гадать, что где лежит: видно сразу.
Переменные ищутся по имени и фильтруются по типу и допустимости null. Наблюдая, как значения меняются, вы находите место, где появляется неожиданное.
- Запустите приложение в Test Mode — панель Debug info появится слева.
- Работайте с приложением: значения в панели обновляются по ходу дела.
Пример
Допустим, в магазине при тестировании выясняется, что переменная неожиданно равна null, и на экран уходит неверная информация.

По панели видно: переменная выпадающего списка остаётся null, пока пользователь не выберет значение. Причина найдена — остаётся задать начальное значение и проверить заново.
Логи браузера
Запустите приложение в Run или Test Mode и откройте консоль.
Google Chrome
- Windows — F12 или Ctrl+Shift+J
- macOS — F12 или ⌘+Option+J
Safari
Включите «Показать меню Разработка» в настройках (вкладка «Дополнения»), затем нажмите ⌘+Option+C.
Ошибки в консоли подсвечены красным.
Логи устройства в десктопном приложении
При запуске через Local Run в десктопном приложении сбои попадают в логи устройства. По ним понятно, что именно пошло не так.
Скажем, пользователь ввёл букву там, где ожидалось число, — ошибка окажется в логе с точным указанием места.
Непонятный текст ошибки можно целиком отдать языковой модели и попросить объяснить — часто это быстрее, чем искать формулировку в поиске.

Всплывающее окно с ошибкой
Если появилось окно с ошибкой, раскройте красную часть (Read More) — внизу будет указан виджет или ошибка, из-за которой сборка или выгрузка не прошла.
Пример 1
Есть текстовый виджет, на нём висит незаконченное действие. При попытке выгрузить проект появится такое:

Чтобы найти виновника в дереве виджетов, читайте список сверху вниз и ориентируйтесь на номер потомка: Child 1 — первый потомок предыдущего виджета, Child 2, 3 и далее — его соседи.
Если вы даёте виджетам имена, искать не придётся — имя будет прямо в окне:

Что именно сломало виджет, видно в списке проблем проекта.
Пример 2
Собственный виджет работал, но после правки в коде появилась опечатка — и вот результат:

Вторая строка «Error:» прямо указывает: проблема в имени метода в собственном коде.
Ошибки времени выполнения
Такие ошибки возникают не при сборке, а во время работы приложения.
Например, при неверно настроенных правилах безопасности Firestore приложение соберётся без единого замечания, а данные не загрузятся — потому что запрос отклонит база. Пока приложение не обратится к Firestore, проблема себя не проявит.
Такие ошибки показываются в Run Mode отдельным уведомлением:
