😽

【Flutter】Riverpodのref.listenで画面遷移する

2024/06/19に公開

やりかた

以下をConsumerStatelessWidgetか、Comsumer内部で呼び出すと、isExitがtrue担ったら画面遷移されるようになる。

   ref.listen(
                hogehogeProvider
                    .select((s) => s.isExit),
                (previous, next) {
                  if (next == isExit) {
                    unawaited(
                      Navigator.pushReplacement(context, TmpRoutePage.route()),
                    );
                  }
                },
              );

initState を始め、State のライフサイクルメソッド内での使用も避けてください。

という注意書きがあるので、StatelessWidgetでの使用が望ましい。
selectを使わなくてもかけます。

参考

https://riverpod.dev/ja/docs/concepts/reading#reflisten-を使ってプロバイダを監視する

Discussion