Wiita

自分にとってのメモと, プログラミングに関する情報を発信していきます. サイト名の意味は特にありません.

生成したダイアログでRiverpodで提供しているStateの変更を反映させる

Riverpodの使っているFlutterのアプリケーションで,StateNotifierで提供しているオブジェクトをwatchし,それをダイアログに渡して表示させたり,stateを変更したい場合,ダイアログそのものでwatchする必要がありそうです(引数で渡すだけではNG).

Dialog内でもStateNotifierから提供させるオブジェクトをwatchしてあげないと,stateの変更がUIに反映されませんでした.

もちろん,ダイアログも ConsumerWidgetを継承させてあげる必要があります.

class Dialog extends ConsumerWidget {
  @override
  Widget build(BuildContext context, ScopedReader watch) {
    final viewModelState =
        watch(XXXNotifierProvider().state);
    final viewModel =
        watch(XXXNotifierProvider());
    return Dialog(...);
}

RiverpodのStateNotifierProviderが返すオブジェクトはシングルトンになっているので問題もないです.

Riverpod,便利ですね...