Ошибки ИИ во Flutter и чек-лист
и как проверить то, чего я проверить не смог
Что это
Завершение главы. Здесь же — то, чего нет в других главах: список того, что ты должен проверить сам, потому что я этого сделать не смог (статья 11.1).
Ошибки ИИ во Flutter
-
Код для старой версии. Главная проблема этого стека. Устаревшие имена виджетов и параметров;
flutter analyzeобычно ругается. -
!,late,dynamic. Три способа отключить проверку пустоты — прямой аналогany,asиts-ignoreиз статьи 9.6. -
Присваивание без
setState. Значение меняется, экран нет. -
Нет
dispose. Контроллеры и подписки переживают виджет. -
Запрос к сети в
build.buildвызывается часто. -
Stateful без состояния. Лишний класс.
-
Нет
constтам, где виджет не зависит от данных. Лишние пересоздания. -
Ресурс не объявлен в
pubspec.yaml. Ошибка не при сборке, а при открытии экрана. -
Сделан только удачный случай. Нет загрузки, ошибки, пустоты (статья 11.5).
-
Отказ в разрешении не обработан. Особенно «отказали навсегда».
-
Добавлена вторая библиотека состояния. Потому что в запросе не назвали первую.
-
Фиксированные размеры. Переполнение на узком экране.
Чек-лист Flutter-кода
1. Анализатор
flutter analyzeПервый и главный шаг — здесь он заменяет mypy и tsc. Ловит устаревшие
API, забытые const, неиспользуемое, часть ошибок с пустотой.
2. Запуск
flutter runГорячая перезагрузка показывает правку сразу, но не все изменения
подхватываются: правки в initState и в объявлениях часто требуют полной
перезагрузки. Если изменение «не применилось» — перезапусти целиком, прежде
чем искать ошибку в коде.
3. Узкий экран и длинный текст
Запустить на маленьком устройстве или сузить окно. Вписать длинное название. Жёлто-чёрная полоса переполнения — самая частая находка.
4. Четыре состояния
Загрузка, пусто, ошибка, данные. Для ошибки — выключить сеть на устройстве.
5. Разрешения
Отказать в разрешении. Потом отказать навсегда. Приложение должно продолжать работать и объяснять, что делать.
6. Обе платформы
Если собираете под Android и iOS — проверить на обеих. Кнопка «назад», безопасные зоны, диалоги ведут себя по-разному.
Как проверить эту главу
Примеры здесь не прогонялись, поэтому — как убедиться, что написанное верно:
Вот фрагмент из справочника по Flutter: <фрагмент>.
У меня Flutter 3.38. Это актуально для моей версии?
Если что-то устарело или неточно — скажи, что именно,
со ссылкой на документацию.И самый надёжный способ — просто запустить. Создай пустой проект и проверь то, что показалось сомнительным:
flutter create proba && cd proba && flutter runКак сказать ИИ
Проверь этот Flutter-код по списку:
- актуален ли API для Flutter 3.38
- есть ли !, late или dynamic и почему
- все ли изменения состояния через setState
- есть ли dispose у контроллеров и подписок
- нет ли запросов в build
- есть ли const там, где виджет статичен
- реализованы ли загрузка, ошибка и пустота
Что из этого есть? Если ничего — так и скажи.Шпаргалка
Главная ошибка стека — код для старой версии. Называй свою.
!,late,dynamic— заглушки, а не решения.Изменения только через
setState; контроллеры закрывать вdispose.flutter analyze— первый шаг проверки, заменяетmypyиtsc.«Не применилось» — сначала полная перезагрузка, потом поиск ошибки.
Проверь: узкий экран, четыре состояния, отказ в разрешении, обе платформы.