Flutter の UI は、状態 を定義し、それを build() メソッドで参照しながら「宣言的」に構築される設計になっています。 そしてその 状態をどのように参照し、どのように状態の変更を検知してリビルドするか という課題をひとことで 状態管理 と言い、その状態管理の手法にはさまざまな(覚えきれないくらいの)選択肢があることはご存じの通りかと思います。 ひとつひとつを独立した手法ととらえて理解しようとするととても難しく感じてしまいますが、それぞれの状態管理手法を眺めていると、だいたい大きく分けて以下の 3 つの要素で成り立っているように思えます。[1] ステート: 状態を保持するオブジェクト メンテナ: ステートを生成、変更するオブジェクト プロバイダ: ステートへアクセスする手段や変更を通知するオブジェクト この記事では、具体例として Riverpod パッケージを見ながらこの 3
