synchroflite 0.1.4 copy "synchroflite: ^0.1.4" to clipboard
synchroflite: ^0.1.4 copied to clipboard

Dart implementation of Conflict-free Replicated Data Types (CRDTs) using Sqlite

Dart implementation of Conflict-free Replicated Data Types (CRDTs) providing Sqflite API. Based on work by Daniel Cachapa

The scope of this implementation is to provide an API to be used in drift_crdt.

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 #

synchroflite 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.

NOTE: #

This package does not implement full Sqflite API. It only implements the API needed for drift_crdt to work. If you need more, please open an issue or a PR.