couchbase_lite 2.8.5 copy "couchbase_lite: ^2.8.5" to clipboard
couchbase_lite: ^2.8.5 copied to clipboard

Flutter plugin for Couchbase Lite Community Edition, an embedded lightweight, noSQL database with live synchronization and offline support on Android and iOS.

example/lib/main.dart

import 'dart:async';

import 'package:couchbase_lite/couchbase_lite.dart';
import 'package:couchbase_lite_example/beer_sample_app.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(BeerSampleApp(AppMode.production));
//void main() => runApp(ExampleApp());

class ExampleApp extends StatefulWidget {
  @override
  _ExampleAppState createState() => _ExampleAppState();
}

class _ExampleAppState extends State<ExampleApp> {
  String _displayString = 'Initializing';
  Database database;
  Replicator replicator;
  ListenerToken _listenerToken;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<String> runExample() async {
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      database = await Database.initWithName("gettingStarted");
    } on PlatformException {
      return "Error initializing database";
    }

    // Create a new document (i.e. a record) in the database.
    var mutableDoc =
        MutableDocument().setDouble("version", 2.0).setString("type", "SDK");

    // Save it to the database.
    try {
      await database.saveDocument(mutableDoc);
    } on PlatformException {
      return "Error saving document";
    }

    // Update a document.
    mutableDoc = (await database.document(mutableDoc.id))
        ?.toMutable()
        ?.setString("language", "Dart");

    if (mutableDoc != null) {
      // Save it to the database.
      try {
        await database.saveDocument(mutableDoc);

        var document = await database.document(mutableDoc.id);

        // Log the document ID (generated by the database)
        // and properties
        print("Document ID :: ${document.id}");
        print("Learning ${document.getString("language")}");
      } on PlatformException {
        return "Error saving document";
      }
    }

    // Create a query to fetch documents of type SDK.
    var query = QueryBuilder.select([SelectResult.all()])
        .from("gettingStarted")
        .where(Expression.property("type").equalTo(Expression.string("SDK")));

    // Run the query.
    try {
      var result = await query.execute();
      print("Number of rows :: ${result.allResults().length}");
    } on PlatformException {
      return "Error running the query";
    }

    // Note wss://10.0.2.2:4984/my-database is for the android simulator on your local machine's couchbase database
    // Create replicators to push and pull changes to and from the cloud.
    ReplicatorConfiguration config =
        ReplicatorConfiguration(database, "ws://10.0.2.2:4984/beer-sample");
    config.replicatorType = ReplicatorType.pushAndPull;
    config.continuous = true;

    // Add authentication.
    config.authenticator = BasicAuthenticator("foo", "bar");

    // Create replicator (make sure to add an instance or static variable named replicator)
    var replicator = Replicator(config);

    // Listen to replicator change events.
    _listenerToken = replicator.addChangeListener((ReplicatorChange event) {
      if (event.status.error != null) {
        print("Error: " + event.status.error);
      }

      print(event.status.activity.toString());
    });

    // Start replication.
    await replicator.start();
    return "Database and Replicator Started";
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    var result = await runExample();

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _displayString = result;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Text(_displayString),
        ),
      ),
    );
  }

  @override
  void dispose() async {
    await replicator?.removeChangeListener(_listenerToken);
    await replicator?.stop();
    await replicator?.dispose();
    await database?.close();

    super.dispose();
  }
}
46
likes
35
points
101
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter plugin for Couchbase Lite Community Edition, an embedded lightweight, noSQL database with live synchronization and offline support on Android and iOS.

Repository (GitHub)

License

MIT (license)

Dependencies

built_collection, built_value, flutter, meta, uuid

More

Packages that depend on couchbase_lite