Isar Plus

Quick Start

Get started with Isar Plus in your Flutter project

Quick Start

This guide will help you get started with Isar Plus in just a few minutes.

Isar Plus works on iOS, Android, Desktop, and Web with persistent storage via OPFS/IndexedDB.

Installation

Add Dependencies

Add Isar Plus to your project:

dependencies:
  isar_plus: ^1.2.0
  isar_plus_flutter_libs: ^1.2.0
  path_provider: ^2.1.5

dev_dependencies:
  build_runner: ^2.10.4
dependencies:
  isar_plus: ^1.2.0

dev_dependencies:
  build_runner: ^2.10.4

Define Your Schema

Create your first collection:

lib/models/user.dart
import 'package:isar_plus/isar_plus.dart';

part 'user.g.dart';

@collection
class User {
  User({required this.id});

  final int id;

  late String name;

  int? age;

  late String email;
}

The part directive is required for code generation.

Generate Code

Run the code generator:

flutter pub run build_runner build

Or watch for changes:

flutter pub run build_runner watch

Open Isar Instance

Initialize Isar in your app:

lib/main.dart
import 'package:isar_plus/isar_plus.dart';
import 'package:path_provider/path_provider.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  final dir = await getApplicationDocumentsDirectory();
  final isar = Isar.open(
    schemas: [UserSchema],
    directory: dir.path,
  );

  runApp(MyApp(isar: isar));
}

Use Your Database

Start storing and querying data:

// Create
await isar.writeAsync((isar) async {
  final user = User(id: isar.users.autoIncrement())
    ..name = 'John Doe'
    ..age = 25
    ..email = 'john@example.com';
  
  isar.users.put(user);
});

// Read
final allUsers = await isar.users.where().findAllAsync();

// Query
final youngUsers = await isar.users
  .where()
  .ageLessThan(30)
  .findAllAsync();

// Update
await isar.writeAsync((isar) async {
  user.age = 26;
  isar.users.put(user);
});

// Delete
await isar.writeAsync((isar) async {
  isar.users.delete(user.id);
});

Next Steps

Remember to always use write transactions for modifying data!

Last Update