dhruvanbhalara/skills

flutter-isar

Use when configuring local persistence with Isar NoSQL database, defining schemas, or executing reactive queries in Flutter.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/dhruvanbhalara/skills --skill flutter-isar

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Isar Database

  • Use Isar as the primary local database for structured data persistence
  • Define collections using @collection annotation with Id field
  • Place collection definitions in the data/local/ directory of the relevant feature
  • Run dart run build_runner build --delete-conflicting-outputs after modifying collections

Schema Design

  • Keep collections focused: one collection per domain entity
  • Use @Index annotations for fields queried frequently
  • Use @enumerated for enum fields
  • Use Links and Backlinks for relationships between collections
  • NEVER store derived/computed values: compute them in the domain layer

Migrations

  • Isar handles additive schema changes automatically (new fields, new collections)
  • For breaking changes (renamed fields, removed fields), write migration logic in the repository
  • Version your database schema and check version on app startup

Repository Pattern for Local Data

  • Local DataSource wraps all Isar put, get, delete, watch calls
  • Repositories orchestrate between remote and local DataSources
  • Repositories decide cache-first vs network-first strategy per use case

Offline-First Patterns

  • Cache-First: Read from Isar first, fetch from network in background, update Isar on success
  • Network-First: Fetch from network, fall back to Isar on failure
  • Write-Behind: Write to Isar immediately, sync to server asynchronously (queue pending changes)
  • Always show cached data immediately while refreshing in background

Reactive Queries

  • Use Isar's watchLazy() or watch() to stream changes to the UI via BLoC
  • Wrap Isar watch streams in the repository and expose as Stream<List<DomainModel>>
  • Dispose stream subscriptions properly in BLoC close() method

Secure Storage

  • Use flutter_secure_storage for sensitive key-value data (tokens, encryption keys)
  • Use SharedPreferences ONLY for non-sensitive user preferences (theme, locale, onboarding flags)
  • NEVER store passwords, tokens, or secrets in SharedPreferences or plain Isar

タスクに関連する項目

同じリポジトリから

関連する Skills

すべての Skills