状態管理
アプリの状態管理は種類によって二つに分かれます
- Backend からのデータ取得・保持
- その他アプリ内の状態保持
Backend からのデータ取得・保持
graphql パッケージが高機能なキャッシュマネジメントシステムを提供しているので、こちらで管理します。Query / Mutation の Dart コードは graphql_codegen で生成します。
その他アプリ内の状態保持
アプリ内の状態保持全般として Flutter Hooks + Riverpod で管理しています。 両者 Remi 氏 によりメンテされており相性が良い
Flutter Hooks と Riverpod の使い分け
Flutter Hooks
- Widget 内で完結する状態の管理に使い易い
- controller 系 を useXXX で使えるので StatelessWidget でも簡単に扱えます
- TextEditingController 等
Riverpod
- Provider を自分でグローバルに定義できて、どこからでも参照できる
- Widget をまたぐ状態管理や複雑な状態管理に有用