Start Debugging

Тег: dart

54 статей · Страница1из6

Как добавить анимацию Hero между двумя экранами в Flutter
Оберните один и тот же виджет на обеих маршрутах в Hero с идентичным tag, и Flutter анимирует его положение и размер во время навигации. Полное руководство: изображения, flightShuttleBuilder, createRectTween, дуги RectTween, переходы по жесту и коллизии tag, которые всё ломают. Проверено на Flutter 3.44, Dart 3.12.
2026-07-13 flutterdartasync
Как отменить StreamSubscription в dispose, чтобы избежать сбоя setState-после-dispose во Flutter
Stream продолжает эмитить события после того, как пользователь покинул экран, его onData вызывает setState на уже уничтоженном State, и Flutter выбрасывает исключение. Сохраните подписку, отмените её в dispose перед super.dispose, и колбэк уже никогда не сработает на мёртвом виджете. Полный паттерн для Flutter 3.44.
2026-07-13 flutterdartasync
Как защитить setState проверкой mounted после асинхронного разрыва во Flutter
После await виджет может быть уже уничтожен, и вызов setState бросает исключение. Защитите возобновление через if (!mounted) return; и, что лучше, отмените работу, которая его запускает. Полный паттерн для Flutter 3.44.
Переход с Riverpod 2.x на Riverpod 3.0 во Flutter
Пошаговое обновление с flutter_riverpod 2.x до 3.x: поднимите версии пакетов, перенесите StateProvider и его собратьев в legacy-импорт, откажитесь от ref-типов AutoDispose и Family, обработайте оборачивание в ProviderException и автоматический повтор, а также исправьте фильтрацию уведомлений по ==, которая молча теряет события StreamProvider. Проверено на Flutter 3.44, Dart 3.x, flutter_riverpod 3.3.2.
go_router против auto_route против Navigator 2.0 во Flutter
go_router и auto_route оба работают поверх Navigator 2.0, поэтому реальный выбор -- это декларативная маршрутизация по URL против типизированных маршрутов на основе кодогенерации против ручной реализации Router API. Матрица решения с конфигурацией для каждого варианта и случаи, когда чистый Navigator всё ещё выигрывает.
shrinkWrap vs Expanded vs sliver-ы для длинных списков в Flutter: что выбрать?
Для длинного списка никогда не используйте shrinkWrap. Используйте Expanded, когда список является единственным прокручиваемым элементом, и sliver-ы (CustomScrollView), когда он делит прокрутку с другими секциями. Вот почему, с бенчмарком по числу build-ов.
2026-07-06 errorsflutterdart
Исправление: Riverpod 3.0 бросает ProviderException вместо исходной ошибки
Riverpod 3.0 оборачивает ошибки, брошенные при чтении провайдера, в ProviderException. Поймайте этот тип и прочитайте e.exception, чтобы получить исходную ошибку обратно, или используйте AsyncValue.error, который не обёрнут.
Вперёд