搜索插件、代码仓与 APP 分类

插件详情v2.8.5

couchbase_lite

Couchbase Lite Community Edition 的 Flutter 插件,一个嵌入式轻量级 NoSQL 数据库,支持 Android 和 iOS 上的实时同步和离线功能。

近 30 天下载
75
喜欢数
46
Pub 分数
35

安装插件

flutter pub add couchbase_lite

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Couchbase Lite 是一个轻量级的嵌入式 NoSQL 数据库,适用于 Flutter 应用程序,支持离线数据存储以及跨设备的实时同步。专为移动平台设计,支持 Android 和 iOS,并通过 Couchbase Sync Gateway 实现无缝同步功能。该插件将 Couchbase Lite Community Edition 集成到 Flutter 项目中,使开发者能够本地存储结构化数据,并在连接恢复时同步更改。非常适合需要可靠离线功能和跨设备一致数据的应用程序。

适合场景

  • 离线优先的移动应用
  • 实时数据同步
  • 移动应用中的本地数据持久化
  • 需要本地数据库的混合应用
  • 跨设备数据一致性

主要特点

  • 嵌入式NoSQL数据库
  • 与 Sync Gateway 的实时同步
  • 强大的离线支持
  • 跨平台(Android 和 iOS)
  • 轻量且快速的性能

适合对象

  • 需要离线数据的移动应用开发者
  • 需要实时同步的应用程序
  • 构建离线功能的初创公司
  • 使用NoSQL数据模型的团队
  • 后端基础设施有限的项目

使用建议

  • 需要 Couchbase Sync Gateway 才能实现完整同步
  • 仅限 Android 和 iOS 平台
  • 同步网关集成的额外设置
  • NoSQL模式设计的学习曲线
  • 简单数据需求的潜在开销

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

couchbase_lite plugin

Build Status Coverage Status pub package

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

The goal of this project is to align this library with the Swift SDK API for Couchbase Lite.

Note: This plugin is still under development, and some APIs might not be available yet. Feedback and Pull Requests are most welcome!

This project forked from Fluttercouch

Getting Started

In your flutter project add the dependency:

dependencies:
  couchbase_lite: ^2.7.1
  
  flutter:
      sdk: flutter

For help getting started with Flutter, view the online documentation

Supported Versions

iOS
Platform Minimum OS version
iOS 10.0 (9.0 - DEPRECATED)
Android
Platform Runtime architectures Minimum API Level
Android armeabi-v7a 22 (19 - DEPRECATED)
Android arm64-v8a 22 (21 - DEPRECATED)
Android x86 22 (19 - DEPRECATED)
Android x86_64 22

API References

Swift SDK API References

Java SDK API References

Note: Syntax follows the Swift SDK but these are the SDKs used for the platform code.

Local Server Setup

Download and setup Couchbase Server / Sync Gateway Community Editions on your local machine the following link

Setup beer-sample database Local Couchbase Server:

  • Add the beer-sample bucket: Settings > Sample Buckets
  • Create a sync_gateway user in the Couchbase Server under Security
  • Give sync_gateway access to the beer-sample

Start Sync Gateway:

~/Downloads/couchbase-sync-gateway/bin/sync_gateway ~/path/to/sync-gateway-config.json

Note: Included in this example is sync-gateway-config.json (Login => u: foo, p: bar)

Usage example

Below is an example for the database using the BLoC pattern ( View <-> BLoC <-> Repository <-> Database )

// Initialize the database
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("mydocs")])
    .from("gettingStarted", as: "mydocs")
    .where(Expression.property("type").from("mydocs").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();

For this getting started guide, you will need to allow using ws protocol.

As of Android Pie, version 9, API 28, cleartext support is disabled, by default. Although wss: protocol URLs are not affected, in order to use the ws: protocol, applications must target API 27 or lower, or must configure application network security as described here.

<application android:usesCleartextTraffic="true">
</application>

App Transport Security is enabled by default since iOS 9 and enforces applications to use HTTPS exclusively. For this getting started guide, you will disable it but we recommend to enable it in production (and enable HTTPS on Sync Gateway). In the Xcode navigator, right-click on Info.plist and open it as a source file.

Append the following inside of the XML tags to disable ATS.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>

所属分类

依赖

依赖清单 4 项

源码仓库

使用此插件的项目

暂无相关数据。