Quickstart โข Documentation โข Sample Apps โข Support & Ideas โข Pub.dev
> #### Isar [ee-zahr]: > > 1. River in Bavaria, Germany. > 2. [Crazy fast](#benchmarks) NoSQL database that is a joy to use. ## Features - ๐ **Made for Flutter**. Easy to use, no config, no boilerplate - ๐ **Highly scalable** The sky is the limit (pun intended) - ๐ญ **Feature rich**. Composite & multi-entry indexes, query modifiers, JSON support etc. - โฑ **Asynchronous**. Parallel query operations & multi-isolate support by default - ๐ฆ **Open source**. Everything is open source and free forever! Isar database can do much more (and we are just getting started) - ๐ต๏ธ **Full-text search**. Make searching fast and fun - ๐ฑ **Multiplatform**. iOS, Android, Desktop - ๐งช **ACID semantics**. Rely on database consistency - ๐ **Static typing**. Compile-time checked and autocompleted queries - โจ **Beautiful documentation**. Readable, easy to understand and ever-improving Join the [Telegram group](https://t.me/isardb) for discussion and sneak peeks of new versions of the DB. If you want to say thank you, star us on GitHub and like us on pub.dev ๐๐ ## Quickstart Holy smokes you're here! Let's get started on using the coolest Flutter database out there... ### 1. Add to pubspec.yaml ```yaml isar_version: &isar_version 3.1.0 # define the version to be used dependencies: isar: *isar_version isar_flutter_libs: *isar_version # contains Isar Core dev_dependencies: isar_generator: *isar_version build_runner: any ``` ### 2. Annotate a Collection ```dart part 'email.g.dart'; @collection class Email { Id id = Isar.autoIncrement; // you can also use id = null to auto increment @Index(type: IndexType.value) String? title; List
To launch the inspector, just run your Isar app in debug mode and open the Inspector link in the logs.
## CRUD operations
All basic crud operations are available via the `IsarCollection`.
```dart
final newEmail = Email()..title = 'Amazing new database';
await isar.writeTxn(() {
await isar.emails.put(newEmail); // insert & update
});
final existingEmail = await isar.emails.get(newEmail.id!); // get
await isar.writeTxn(() {
await isar.emails.delete(existingEmail.id!); // delete
});
```
## Database Queries
Isar database has a powerful query language that allows you to make use of your indexes, filter distinct objects, use complex `and()`, `or()` and `.xor()` groups, query links and sort the results.
```dart
final importantEmails = isar.emails
.where()
.titleStartsWith('Important') // use index
.limit(10)
.findAll()
final specificEmails = isar.emails
.filter()
.recipient((q) => q.nameEqualTo('David')) // query embedded objects
.or()
.titleMatches('*university*', caseSensitive: false) // title containing 'university' (case insensitive)
.findAll()
```
## Database Watchers
With Isar database, you can watch collections, objects, or queries. A watcher is notified after a transaction commits successfully and the target actually changes.
Watchers can be lazy and not reload the data or they can be non-lazy and fetch new results in the background.
```dart
Stream
|
|
| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
|
If you are interested in more benchmarks or want to check how Isar performs on your device you can run the [benchmarks](https://github.com/isar/isar_benchmark) yourself.
## Unit tests
If you want to use Isar database in unit tests or Dart code, call `await Isar.initializeIsarCore(download: true)` before using Isar in your tests.
Isar NoSQL database will automatically download the correct binary for your platform. You can also pass a `libraries` map to adjust the download location for each platform.
Make sure to use `flutter test -j 1` to avoid tests running in parallel. This would break the automatic download.
## Contributors โจ
Big thanks go to these wonderful people:
Alexis |
Burak |
Carlo Loguercio |
Frostedfox |
Hafeez Rana |
Hamed H. |
JT |
Jack Rivers |
Joachim Nohl |
Johnson |
LaLucid |
Lety |
Michael |
Moseco |
Nelson Mutane |
Peyman |
Simon Leier |
Ura |
blendthink |
mnkeis |
nobkd |