Start Debugging

Тег: flutter

159 статей · Страница1из16

2026-10-25 flutterdartios
Как заблокировать ориентацию экрана для одного экрана во Flutter (и почему многозадачность на iPad её игнорирует)
Как зафиксировать один маршрут Flutter в альбомной или портретной ориентации через SystemChrome.setPreferredOrientations, не ломая остальное приложение: блокировка на основе стека, которая переживает pushReplacement и восстанавливается при pop, почему пустой список не годится для сброса, почему многозадачность iPad и большие экраны Android 16 игнорируют блокировку и что означает UIRequiresFullScreen после iPadOS 26 и iOS 27 SDK. Проверено на Flutter 3.47.8 с Dart 3.13.7 и Xcode 27.1.
Как удалять элементы из List в Dart во время обхода без ConcurrentModificationError
Вызов remove внутри цикла for-in или forEach выбрасывает ConcurrentModificationError. Используйте removeWhere для фильтрации на месте, создайте новый список через where или collection-for либо обходите индексы в обратном порядке. Проверено на Dart 3.13.7, с бенчмарком, который показывает, почему removeAt в цикле работает медленно.
2026-10-25 dartflutterjson
Как сериализовать и десериализовать иерархию sealed-классов Dart в JSON и обратно
Поместите в JSON поле-дискриминатор, переключайтесь по нему в фабрике на sealed-базе и переключайтесь по подтипу, чтобы записать объект обратно. Три рабочие версии на Dart 3.13.7: ручное сопоставление с образцом, json_serializable 6.15.2 и Freezed 4.0.3 с unionKey и fallbackUnion, а также подводные камни каждой из них.
2026-10-24 dartflutterlints
Что такое линт depend_on_referenced_packages в Dart и почему он срабатывает на транзитивные импорты
depend_on_referenced_packages срабатывает, когда файл импортирует или экспортирует пакет, которого нет в вашем собственном pubspec.yaml, даже если он подтягивается через другую зависимость. Что именно проверяет это правило на Dart 3.12.2 и Flutter 3.44.8, почему транзитивные импорты это настоящая ошибка и как исправить каждый вариант.
Миграция Flutter-приложения с Color.withOpacity на Color.withValues (Flutter 3.27+)
Замените устаревшие Color.withOpacity, opacity, value, red, green, blue и alpha на withValues, .a/.r/.g/.b и toARGB32. Что dart fix перепишет за вас, четыре геттера, которые он оставляет, почему после замены ломаются точные проверки цветов и поиск в Map<Color, T> и как withOpacity молча теряет Display P3. Измерено на Flutter 3.44.8 с Dart 3.12.2.
Миграция Flutter-приложения с WidgetsBindingObserver.didChangeAppLifecycleState на AppLifecycleListener (Flutter 3.13+)
Замените самописный код жизненного цикла на WidgetsBindingObserver на AppLifecycleListener: соответствие колбэков, конечный автомат, который он навязывает, новое состояние hidden, ломающее исчерпывающие switch, запросы на выход на десктопе и тест, который внезапно падает на assert. Проверено на Flutter 3.44.8 и Dart 3.12.2.
Expanded или Flexible во Flutter: разбор FlexFit.tight и FlexFit.loose
Используйте Expanded, когда дочерний виджет должен занять свою долю Row или Column, и Flexible, когда он может быть меньше своей доли. Замеры раскладки на Flutter 3.44 показывают, куда уходит оставшееся место, почему неплотные дочерние виджеты не отдают его соседям и когда при неограниченных ограничениях работает только Flexible.
unawaited_futures и discarded_futures в Dart: какой линтер ловит какой вызов без await
unawaited_futures смотрит только внутрь async-тел, discarded_futures только внутрь синхронных, и оба пропускают стрелочные функции, tear-off и литералы коллекций. Разбор по случаям на Dart 3.12.2 и Flutter 3.44.8 и analysis_options.yaml, который я рекомендую.
Исправление: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is X, expected version is Y (Flutter Android)
Зависимость собрана с версией Kotlin, которая как минимум на две минорные версии новее компилятора вашей сборки. Поднимите версию org.jetbrains.kotlin.android в settings.gradle.kts до X минус один или выше либо закрепите зависимость на старой версии.
Вперёд