cbl_flutter 1.0.0-beta.9 copy "cbl_flutter: ^1.0.0-beta.9" to clipboard
cbl_flutter: ^1.0.0-beta.9 copied to clipboard

outdated

Flutter Plugin for Couchbase Lite, an embedded, NoSQL JSON Document Style database, supporting Blobs, Encryption, N1QL Queries, Live Queries, Full-Text Search and Data Sync.

Version License CI codecov

This is the Flutter plugin for Couchbase Lite.

The Couchbase Lite API is in the cbl package. This package is enabling the use of cbl in Flutter apps.

This package is in beta. Use it with caution and report any issues you see.

๐ŸŽฏ Platform Support #

Platform Version Note
iOS >= 10.0
macOS >= 10.14
Android >= 22
Linux == Ubuntu 20.04-x86_64 ๐Ÿ› Currently broken because of a bug in Flutter.
Most notably, operations trying to return an error crash the app.
Windows >= 10 ๐Ÿšง Not yet implemented

๐Ÿ”Œ Getting started #

  1. Add cbl and cbl_flutter as dependencies:

    dependencies:
      cbl: ...
      cbl_flutter: ...
    
  2. Select the edition of Couchbase Lite you want to use, by adding as a dependency either cbl_flutter_ce for the Community Edition or cbl_flutter_ee for the Enterprise Edition:

    # This dependency selects the Couchbase Lite Community Edition.
    cbl_flutter_ce: ...
    

    โš–๏ธ You need to comply with the Couchbase licensing terms of the edition of Couchbase Lite you select.

  3. Make sure you have set the required minimum target version in the build systems of the platforms you support.

  4. Initialize Couchbase Lite before using it:

    import 'dart:io';
    
    import 'package:cbl_flutter/cbl_flutter.dart';
    import 'package:cbl_flutter_ce/cbl_flutter_ce.dart';
    
    Future<void> initCouchbaseLite() async {
      // On mobile platforms, `CblFlutterCe` and `CblFlutterEe` currently need to
      // be registered manually. This is due to a temporary limitation in how Flutter
      // initializes plugins, and will become obsolete eventually.
      if (Platform.isIOS || Platform.isAndroid) {
        CblFlutterCe.registerWith();
      }
      await CouchbaseLiteFlutter.init();
    }
    

Default database directory #

When opening a database without specifying a directory, path_provider's getApplicationSupportDirectory is used to resolve it. See that function's documentation for the concrete locations on the various platforms.

๐Ÿงช Flutter unit tests #

Flutter unit tests are executed by a headless version of Flutter, on the development host.

๐Ÿšง cbl_dart is not yet implemented for Windows.

You can use the cbl package in your unit tests, but you need to use cbl_dart to initialize Couchbase Lite, instead of cbl_flutter:

import 'dart:io';

import 'package:cbl/cbl.dart';
import 'package:cbl_dart/cbl_dart.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  setupAll(() async {
    // If no `filesDir` is specified when initializing CouchbaseLiteDart, the
    // working directory is used as the default database directory.
    // By specifying a `filesDir` here, we can ensure that the tests don't
    // create databases in the project directory.
    final tempFilesDir = await Directory.systemTemp.createTemp();
    CouchbaseLiteDart.init(edition: Edition.community, filesDir: tempFilesDir.path);
  });

  test('use a database', () async {
    final db = await Database.openAsync('test');
    await db.saveDocument(MutableDocument({'message': 'Hello, World!'}));
    await db.close();
  });
}

Unit tests are the best way to learn, experiment and validate ideas, since they launch much quicker than integration tests. Be aware though, that using Couchbase Lite like this cannot replace integration testing your database code on actual devices or even simulators.

These tests can validate that you're using Couchbase Lite correctly and the code works as expected generally, but subtle differences between platforms, operating system versions and devices can still crop up.

๐Ÿ’ก Where to go next #

  • Check out the example app in the Example tab.
  • Look at the usage examples for cbl (go to the latest prerelease).

โš–๏ธ Disclaimer #

โš ๏ธ This is not an official Couchbase product.

40
likes
0
pub points
88%
popularity

Publisher

verified publishercbl-dart.dev

Flutter Plugin for Couchbase Lite, an embedded, NoSQL JSON Document Style database, supporting Blobs, Encryption, N1QL Queries, Live Queries, Full-Text Search and Data Sync.

Homepage
Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

cbl, cbl_flutter_platform_interface, flutter, path_provider

More

Packages that depend on cbl_flutter