Moor: Persistence library for Dart with a fluent query API, a powerful SQL analyzer, auto-updating streams and much more, moor makes persistence fun. Scroll down to learn about moor's key features, or visit the getting started guide for a step-by-step guide on using moor.
Moor is an easy-to-use, reactive persistence library for Flutter apps. Define tables in Dart or SQL and enjoy a fluent query API, auto-updating streams, and more!
Key moor features
Here are some of the many ways moor helps you write awesome database code:
- Auto-updating streams: With moor, any query - no matter how complex - can be turned into a stream that emits new data as the underlying data changes.
- Polyglot: Moor lets you write queries in a fluent Dart API or directly in SQL - you can even embed Dart expressions in SQL.
- Boilerplate-free: Stop writing mapping code yourself - moor can take of that. Moor generates Dart code around your data so you can focus on building great apps.
- Flexible: Want to write queries in SQL? Moor verifies them at compile time and generates Dart APIs for them. Prefer to write them in Dart? Moor will generate efficient SQL for Dart queries too.
- Easy to learn: Instead of having to learn yet another ORM, moor lets you write queries in SQL and generates typesafe wrappers. Queries and tables can also be written in Dart that looks similar to SQL without loosing type-safety
- Fast and powerful: With the new ffi backend, moor can outperform key-value stores without putting any compromises on the integrity and flexibility that relational databases provide. Moor is the only major persistence library with built-in support for multiple isolates.
- Well tested and production-ready: Each component of the moor is verified by a wide range of unit and integration tests. Moor powers many Flutter apps in production.
- Cross-Platform: Moor works on iOS, Android, Linux, macOS, Windows, and on the web. It doesn't even require Flutter. See supported platforms.