Start Debugging

タグ: state-management

9 件

Flutter で setState の StatefulWidget を Riverpod の Notifier に移行する
ウィジェットローカルな setState から Riverpod 3.x の Notifier へ移す手順です。何をウィジェットの外に出すかを仕分けし、Notifier を書き、ConsumerWidget に変換し、setState からの移行者を悩ませる == によるフィルタリング、build() の再実行、autoDispose の既定値の違いを乗り切ります。Flutter 3.44、Dart 3.x、flutter_riverpod 3.3.2 で検証しました。
2026-07-21 flutterdartriverpod
修正: Riverpod 3.0 で StreamProvider が更新を == でフィルタリングされて発火しなくなる
Riverpod 3.0 では、すべてのプロバイダーがリスナー通知を同一性ではなく == でフィルタリングします。同じミュータブルオブジェクトを再度発行する StreamProvider は、最初のフレーム以降 UI を再構築しなくなります。なぜそうなるのか、そして 3 つの修正方法を解説します。flutter_riverpod 3.3.2、Flutter 3.44、Dart 3.x で検証済みです。
Flutter で Riverpod 2.x から Riverpod 3.0 へ移行する
flutter_riverpod 2.x から 3.x への段階的なアップグレード手順です。パッケージを更新し、StateProvider などを legacy インポートへ移し、AutoDispose と Family の ref 型を廃止し、ProviderException のラップと自動リトライに対応し、StreamProvider のイベントを暗黙的に取りこぼす == による通知フィルタリングを修正します。Flutter 3.44、Dart 3.x、flutter_riverpod 3.3.2 で検証済みです。
2026-07-04 flutterdartriverpod
Flutter Riverpod 3 で非同期ギャップの後に Ref.mounted を確認する方法
Notifier では await の前に依存関係を解決し、その後 if (!ref.mounted) return で state の書き込みを保護します。これは Riverpod 3.0 における古い onDispose ミックスインの代替であり、provider が await の途中で破棄されたときの UnmountedRefException を防ぎます。flutter_riverpod 3.x、Flutter 3.44、Dart 3.x で検証済みです。
2026-06-16 flutterdartriverpod
Flutter で provider から Riverpod へ移行する (provider 6.1.5 から Riverpod 3.x へ)
実際の Flutter アプリで provider パッケージから Riverpod 3.x へ段階的に移行する手順です。ChangeNotifierProvider から Notifier へ、MultiProvider から ProviderScope へ、context.watch から ref.watch へ、ProxyProvider から ref.watch による合成へ、加えて引っかかりやすい等価性とライフサイクルの落とし穴も解説します。Flutter 3.27.1、Dart 3.11、provider 6.1.5、flutter_riverpod 3.3.1 で検証済みです。
2026-06-02 flutterdartriverpod
Flutter Riverpod で AsyncValue を使ってローディングとエラーの状態を表示する方法
Riverpod 3 で単一の AsyncValue からローディング、データ、エラーの状態をレンダリングします。ミューテーションには AsyncNotifier と AsyncValue.guard を、UI には .when() と switch のパターンマッチングを使い、更新時に以前のデータを保持し、レガシーな StateNotifier パターンを移行します。flutter_riverpod 3.x、Flutter 3.44、Dart 3.x でテスト済みです。