Start Debugging

riverpod

15 статей · Страница1из2

ref.watch и ref.read в Riverpod: в чём разница и когда что использовать

ref.watch подписывается и перестраивает, ref.read читает один раз и никогда не перестраивает. Используйте watch в каждом методе build, а read только внутри обработчиков событий. Здесь матрица выбора, исходный код обоих методов во flutter_riverpod 3.4.3 и четыре тихих отказа: watch в обработчике, read в теле провайдера, read у провайдера autoDispose и read в роли оптимизации.

Riverpod Notifier vs AsyncNotifier vs StreamNotifier во Flutter: какой класс наследовать?

Выбор определяется типом возврата build(): T означает Notifier, FutureOr<T> означает AsyncNotifier, Stream<T> означает StreamNotifier. Здесь матрица выбора, иерархия типов, которая это объясняет, и подводные камни фильтрации по == и перезаписи состояния. Проверено на flutter_riverpod 3.4.2 и Flutter 3.44.2.

Перенос StatefulWidget с setState на Notifier из Riverpod во Flutter

Пошаговый переход от локального setState виджета к Notifier из Riverpod 3.x: как разделить состояние, написать Notifier, перейти на ConsumerWidget и пережить фильтрацию по ==, повторный вызов build() и разные значения autoDispose по умолчанию. Проверено на Flutter 3.44, Dart 3.x и flutter_riverpod 3.3.2.
2026-07-21 flutterdartriverpod

Исправление: StreamProvider в Riverpod 3.0 перестаёт эмитить, потому что обновления фильтруются по ==

В Riverpod 3.0 каждый провайдер фильтрует уведомления слушателей по ==, а не по идентичности. StreamProvider, который повторно эмитит один и тот же изменяемый объект, перестаёт перестраивать UI после первого кадра. Здесь разбирается, почему так происходит, и три способа исправить это. Проверено на flutter_riverpod 3.3.2, Flutter 3.44, Dart 3.x.

Переход с 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.
2026-07-06 errorsflutterdart

Исправление: Riverpod 3.0 бросает ProviderException вместо исходной ошибки

Riverpod 3.0 оборачивает ошибки, брошенные при чтении провайдера, в ProviderException. Поймайте этот тип и прочитайте e.exception, чтобы получить исходную ошибку обратно, или используйте AsyncValue.error, который не обёрнут.
2026-07-04 flutterdartriverpod

Как проверять Ref.mounted после асинхронного разрыва во Flutter Riverpod 3

В Notifier сначала получите зависимости до await, а затем защитите запись в state с помощью if (!ref.mounted) return. Это замена в Riverpod 3.0 для старого миксина с onDispose, которая предотвращает UnmountedRefException, когда provider уничтожается посреди await. Проверено на flutter_riverpod 3.x, Flutter 3.44, Dart 3.x.
Вперёд