flutter-isar

- Use Isar as the primary local database for structured data persistence

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "flutter-isar" with this command: npx skills add dhruvanbhalara/skills/dhruvanbhalara-skills-flutter-isar

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

flutter-architecture

No summary provided by upstream source.

Repository SourceNeeds Review
General

flutter-ui

No summary provided by upstream source.

Repository SourceNeeds Review
General

flutter-bloc

No summary provided by upstream source.

Repository SourceNeeds Review
General

flutter-testing

No summary provided by upstream source.

Repository SourceNeeds Review