2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Flutter】ChangeNotifierProvider【provider】

Last updated at Posted at 2023-11-02

コードに対する理解が薄いのを自覚する場面がありましたので
ここに記す。

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, __)


2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?