コードに対する理解が薄いのを自覚する場面がありましたので
ここに記す。
ConsumerNotifierProviderとは
ChangeNotifierをlistenし、その子孫に公開
notifyListenersが呼び出される度に再構築します。
→超ざっくりに言うとデータの変更を監視、通知する。
【例】
ChangeNotifierProvider<▲▲Model>(
// ChangeNotifier(▲▲Model)の関数を呼び出す
create: (context) => ▲▲Model()..◾️◾️◾️(),
↑Viewで画面で監視
class ▲▲Model extends ChangeNotifier {
// データの監視し、変更されたら発火するコード
void ◾️◾️◾️() {
// データの変更したら発火する処理(外部からの入力)
// Consumerに変更を通知するコード
notifyListeners();
},
}
↑データを変更、処理するファイル
notifyListeners();を使うことによってConsumerにデータの変更を通知する。
// Provider(ChangeNotifierProvider)を取得し、その値をBuilder(構築)に渡します。
// つまり更新した値を画面に表示するためのもの
Consumer<ForumListModel>(builder: (context, model, child) {
・・・
}
↑データ変更が通知されたのでView画面が再ビルドされる(再構築)。
【まとめ】
・ChangeNotifierProvideでChangeNotifierを監視
・ChangeNotifierのデータが変更されたらnotifyListeners();でConsumerで通知
・Consumerが通知を受け取り画面を再描画する。
★contextなどはアンダーバーで記述することもできる。
create: (context) => ForumListModel()..ForumList(),
create: (_) => ForumListModel()..ForumList(),
Consumer(builder: (context, model, child)
Consumer(builder: (_, model, __)