UI 状態の分割アイデア
前置き 結論 実装例 UI 状態の定義 UI 状態の内部に保持する各データクラスの定義 各 StateFlow の定義 combine 関数で UI 状態を生成する ポイント 4 つの UI 状態に制限したこと どんなプロパティでも UI 状態に定義した 4 つのプロパティにだいたい収まる まとめ 前置き Jetpack Compose では、一つの画面で、 UI 状態を一つだけ定義しておくことが一般的かと思います。 画面が複雑になっていき、 UI のプロパティが増えていくと、 combine 関数で Flow を合成できなくなることがあります。 これは、 combine 関数の引数が最大でも 5 であるため、それよりたくさんの Flow を直接 combine することができないためです。 そのような場合の一つの対応案のここに残します。 結論 UI 状態のプロパティを以下の 4 つのプロパティにまとめます (制限します) 。 UI ローカル状態 フォーム入力状態 派生 UI 状態 非同期取得データ これらをすべて StateFlow で定義し、データの変更を監視します。 データの変更が検出されるたびに、 combine 関数で StateFlow 内の実データを UI 状態のプロパティにセットします。 ...