⚠️

【Flutter】状態管理されている情報への書き換え場所

2024/05/31に公開

はじめに

状態管理されている情報を書き換えるポイントは制限されていることを知ったので
下記に記します。

書き換えできない場所

build()直下では管理されている状態を書き換えることはできません。
筆者はここでつまづいたのですが、よくよく考えると状態が変更されたらbuild()が再び走るので
ここに書いてしまうと書き換え→再描写→書き換え→再描写...と無限ループに入ってしまうため、
構文としてビルドができないようになっていると思われます。

class AlarmList extends ConsumerWidget {
  AlarmList({super.key});

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    //状態の書き換えを図る
    ref.read(alarmNotifierProvider).update(true);
    ...
  }
}

書き換えが可能な場所

  • StatefullWidgetのinitState()
  • ボタンが押下されるときのみ走る処理や文字入力されたときのみ走る処理の中
    →インタラクティブな処理の中

Discussion