mcpField
F
flutter-state-management

flutter-state-management

github.com/thienqo開発17102 回インストール1 日前に更新
リポジトリ

flutter-state-management について

Flutter 開発者向けに、アプリケーションデータの所有者、変更、監視、破棄を整理する状態管理スキルです。状態を局所化し、遷移を明示し、不変ビューを使い、流行ではなくプロジェクトの要件に沿って方式を選びます。

主な機能

  1. 01範囲とライフサイクルで状態を分類
  2. 02状態を利用者の近くに保つ
  3. 03単一の信頼できる情報源を維持
  4. 04ロード中と失敗の状態をモデル化
  5. 05購読範囲と再ビルドを制限
  6. 06遷移と破棄をテスト

活用シーン

  1. 01Flutter プロジェクトの状態管理方式の選定
  2. 02所有者が曖昧な状態のリファクタリング
  3. 03無関係なウィジェット再ビルドの削減
  4. 04状態変化への UI 応答のテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/thienqo/flutter-skills --skill flutter-state-management

インストール後、Claude Code で/flutter-state-managementを入力して読み込まれたか確認します。

同梱ファイルreferences/async-state-patterns.mdreferences/lifecycle-and-disposal.md

詳細

Flutter の状態管理

まず所有権とライフタイムを確認してから、仕組みを選びます。

調査

状態が一時的な UI 状態、機能の状態、アプリケーション共有状態、キャッシュされたサーバーデータ、永続化データのどれに該当するかを特定します。誰が状態を作成、変更、監視、破棄するのかを確認します。

ルール

  • 利用側が許容する範囲で、状態をできるだけ局所化します。
  • 信頼できる唯一の情報源を維持し、値のコピーを同期するのではなく、二次的な値を導出します。
  • 状態遷移を明示し、副作用をウィジェットの build メソッドの外に置きます。
  • 既存のパッケージが適切に機能している場合は、そのパッケージと慣例を維持します。
  • 新規プロジェクトでは、人気だけでなく、複雑さ、チームの習熟度、テスト容易性、コード生成への許容度、ライフサイクルの要件に基づいて選びます。
  • 不変の状態、または可変コレクションの読み取り専用ビューを公開します。
  • UI で区別が必要な場合は、読み込み中、空、成功、失敗の状態を意図的にモデル化します。
  • 関係のないサブツリーまで再ビルドする広範なサブスクリプションは避けます。
  • パッケージの監視用アクセサー(ref.watch、context.watch<T>()、BlocBuilder)は build または別の監視可能なメソッド内でのみ使用し、単発のアクセサー(ref.read、context.read<T>()、Bloc の add)はコールバックやイベントハンドラー内で使用します。ほとんどのパッケージでは、コールバックから監視用アクセサーを呼び出すと例外が発生するか、正しく動作しません。

所有権が不明確な問題を手早く解決するために、グローバルなサービスロケーターやパッケージレベルのシングルトンを導入しないでください。

検証

重要な状態遷移、障害からの復旧、破棄、イベントの繰り返しをテストします。処理頻度の高い箇所では再ビルドの範囲を確認し、状態から UI への反映をウィジェットテストで検証します。

境界

アーキテクチャ全体の依存関係の方向性は flutter-architecture に、永続化とリモートキャッシュはそれぞれのデータ専門分野に委ねます。

破棄の挙動やライフサイクルのリークが対象となる場合は、ライフサイクルと破棄のリファレンスに従ってください。非同期状態のモデル化とエラーからの復旧については、非同期状態パターンのリファレンスに従ってください。

ソース

コメント