Dart implementation of Conflict-free Replicated Data Types (CRDTs) using Sqlite.
This package implements sql_crdt.

Setup

Awaiting async functions is extremely important and not doing so can result in all sorts of weird behaviour.
You can avoid them by activating the unawaited_futures linter warning in analysis_options.yaml:

linter:
  rules:
    unawaited_futures: true

This package uses sqflite. There's a bit of extra setup necessary depending on where you intend to run your code:

Android & iOS

sqlite_crdt uses recent Sqlite features that may not be available in every system's embedded libraries.

To get around this, import the sqlite3_flutter_libs package into your project:

sqlite3_flutter_libs: ^0.5.12

Desktop, Server

On the desktop and server, Sqflite uses the system libraries so make sure those are installed.

On Debian, Raspbian, Ubuntu, etc:

sudo apt install libsqlite3 libsqlite3-dev

On Fedora:

sudo dnf install sqlite-devel

Otherwise check the instructions on sqflite_common_ffi.

Web

This package has experimental support for Flutter Web, thanks to sqflite_common_ffi_web.

In order to use this feature you'll need to install the Sqlite3 web binaries by running the following command from the project's root:

dart run sqflite_common_ffi_web:setup

Usage

Check example.dart for more details.

Features and bugs

Please file feature requests and bugs in the issue tracker.

Libraries

sqlite_crdt