このチャプターの目次
ProviderListener Widget とは
ボタンを押したときに画面遷移させたりダイアログを表示させるのはよくある動作ですね。
ではProviderの状態が変更されたとき、その変更を検知してWidgetツリー上で画面遷移やダイアログを表示させるにはどうしたら良いでしょう?
ProviderListenerで、Providerの監視とそのハンドリングが可能です。
具体的な使用例は以下の通りです。
top_page.dart
Widget build(BuildContext context) {
// ProviderListerでWidgetを囲みます。<>にはProviderの型を記述します
// ここでは、 `int` をstateとして持つ `StateProvider` を指定
return ProviderListener<StateProvider<int>>(
// 監視したいProviderを指定します
provider: counterProvider,
// 監視対象のProviderの状態が変更されたとき、 `onChange` が実行されます
onChange: (context, counter) {
// `counterProvider` の状態が `5` になったとき、ダイアログを表示します
if (counter.state == 5) {
showDialog(...);
}
},
child: Scaffold(
...
),
);
}
参考リンク
ProviderListener | Riverpod