mcpField
F
flutter-isar

flutter-isar

github.com/dhruvanbhalaraデータ・データベース30149 回インストール8 週間前に更新
リポジトリ

flutter-isar について

Flutter アプリで Isar を構造化データのローカル保存に使うためのガイドです。スキーマ設計、リポジトリ分離、マイグレーション、リアクティブクエリ、オフライン優先のデータフローを扱います。

主な機能

  1. 01Isar コレクションとインデックスの設計
  2. 02リポジトリによるローカルデータアクセスのラップ
  3. 03スキーマ移行の指針
  4. 04オフライン優先の読み書きパターン
  5. 05リアクティブなクエリストリーム
  6. 06機密データの保存に関する指針

活用シーン

  1. 01構造化されたアプリデータのローカル保存
  2. 02更新中のキャッシュデータ表示
  3. 03ローカル書き込みの非同期同期
  4. 04データベース変更の UI へのストリーミング

インストール

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

$npx skills add https://github.com/dhruvanbhalara/skills --skill flutter-isar

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

詳細

Isar データベース

  • 構造化データの永続化には、主要なローカルデータベースとして Isar を使用します
  • Id フィールドを伴う @collection アノテーションを使用してコレクションを定義します
  • コレクション定義は、該当する機能の data/local/ ディレクトリに配置します
  • コレクションを変更した後は、dart run build_runner build --delete-conflicting-outputs を実行します

スキーマ設計

  • コレクションは焦点を絞ります: ドメインエンティティごとに 1 つのコレクションとします
  • 頻繁にクエリされるフィールドには @Index アノテーションを使用します
  • enum フィールドには @enumerated を使用します
  • コレクション間のリレーションシップには Links と Backlinks を使用します
  • 派生値や計算値は決して保存しません: それらはドメイン層で計算します

マイグレーション

  • Isar は追加的なスキーマ変更 (新しいフィールド、新しいコレクション) を自動的に処理します
  • 破壊的変更 (フィールドの名前変更、フィールドの削除) については、リポジトリにマイグレーションロジックを記述します
  • データベーススキーマをバージョン管理し、アプリ起動時にバージョンを確認します

ローカルデータ向けのリポジトリパターン

  • ローカル DataSource は、すべての Isar の put、get、delete、watch 呼び出しをラップします
  • リポジトリは、リモートとローカルの DataSource 間を調整します
  • リポジトリは、ユースケースごとにキャッシュファースト戦略かネットワークファースト戦略かを決定します

オフラインファーストのパターン

  • キャッシュファースト: まず Isar から読み取り、バックグラウンドでネットワークから取得し、成功したら Isar を更新します
  • ネットワークファースト: ネットワークから取得し、失敗した場合は Isar にフォールバックします
  • ライトビハインド: すぐに Isar に書き込み、サーバーへは非同期で同期します (保留中の変更をキューに格納します)
  • バックグラウンドで更新している間も、常にキャッシュされたデータをすぐに表示します

リアクティブクエリ

  • Isar の watchLazy() または watch() を使用して、BLoC 経由で変更を UI にストリーム配信します
  • Isar の watch ストリームをリポジトリでラップし、Stream<List<DomainModel>> として公開します
  • BLoC の close() メソッドでストリームのサブスクリプションを適切に破棄します

セキュアストレージ

  • 機密性の高いキーと値のデータ (トークン、暗号化キー) には flutter_secure_storage を使用します
  • SharedPreferences は、機密性の高くないユーザー設定 (テーマ、ロケール、オンボーディングフラグ) にのみ使用します
  • パスワード、トークン、シークレットを SharedPreferences や平文の Isar に決して保存しません

コメント