cbl 0.4.1+1 cbl: ^0.4.1+1 copied to clipboard
CouchbaseLite for Dart based on the C API. A NoSQL database with change notification, full text search and replication.
cbl #
Warning: This project has not yet reached a stable production release.
Warning: This is not an official Couchbase product.
Features - Couchbase Lite #
- Schemaless JSON documents
- Binary JSON format (Fleece)
- Reading without parsing
- Blobs
- A binary data value associated with a document
- Queries
- Supports large subset of N1QL query language
- Machine readable representation of queries as JSON
- Full text search
- Indexes
- Observable queries
- Replication
- Synchronize with Couchbase Server through Sync Gateway
Features - Dart API #
- Calls Couchbase Lite C API through FFI
- Expensive operations run in separate isolate
- No blocking of calling isolate
- Streams for event based APIs
- Support for Flutter apps
- Support for standalone Dart (for example a CLI)
- Well documented
Installation #
This package only contains Dart code and requires binary libraries to be packaged
with any app that wants to use it. For Flutter apps, you need to add
cbl_flutter
as a dependency to include
those libraries in the build. cbl_flutter
currently supports iOS, macOS and Android.
dependencies:
cbl: ...
cbl_flutter: ...
Getting started #
CouchbaseLite
needs to be initialized with a configuration of how to load
the binary libraries.
import 'package:cbl/cbl.dart';
import 'package:cbl_flutter/cbl_flutter.dart';
void initCbl() {
CouchbaseLite.initialize(libraries: flutterLibraries());
}
Now you can use Database.open
to open a database:
import 'package:cbl/cbl.dart';
import 'package:path_provider/path_provider.dart';
Future<void> openDatabase() async {
final documentsDir = await getApplicationDocumentsDirectory();
final db = await Database.open(
'MyFirstDB',
config: DatabaseConfiguration(directory: documentsDir.path),
)
final doc = MutableDocument()
..properties.addAll({
'type': 'message',
'body': 'Heyo',
'from': 'Alice',
});
final savedDoc = await db.saveDocument(doc)
}