kvsql 0.3.0

Flutter Android iOS

A type safe key/value store backed by Sqlite. It has methods to handle high throughput updates.

Kvsql #

pub package Build Status Coverage Status

A type safe key/value store for Flutter backed by Sqlite. Powered by Sqlcool.

Usage #

Initialize #

   import 'package:kvsql/kvsql.dart';

   store = KvStore();
   await store.onReady;

Initialize with an existing Sqlcool database:

   import 'package:kvsql/kvsql.dart';
   import 'package:sqlcool/sqlcool.dart';

   final db = Db();
   await db.init(path: "mydb.db", schema=[kvSchema()]);
   store = KvStore(db: db);

Insert or update #

   await store.put<String>("mykey", "myvalue");

Supported value types are: String, int, double, bool, List<T>, Map<K, V>

Allowed types for map keys are: String, int and double

Allowed types for lists and maps values are String, int, bool, double and dynamic

Delete #

   await store.delete("mykey");

Select #

Returns a typed value

   final List<int> myValue = await store.select<List<int>>("mykey");

Select sync #

Synchronously select a value.

   final Map<String, int> myValue = store.selectSync<Map<String, int>>("mykey");

For this to work you need to initialize the store with the inMemory option that keeps an in memory copy of the store values.

   store = KvStore(inMemory = true);

Push #

This method upserts a key/value using a queue: it can be safely called concurrently. Useful for high throughput updates.

   store.push("mykey", "my_value");

Limitations:

  • This method is executed asynchronously but can not be awaited
  • It does not control the type of the data

Note: if you don't await your mutations or use push you are exposed to eventual consistency

Check the examples for detailled usage.

Persistant state #

The kvstore can be used to persist the app state. Example with provider:

   import 'package:flutter/foundation.dart';
   import 'package:kvsql/kvsql.dart';

   final stateStore =
       KvStore(inMemory: true, path: "stateStore.db");

   class AppState with ChangeNotifier {
     int get value => stateStore.selectSync<int>("value");
     set value(int v) => stateStore.put<int>("value", v);

     void updateValue(int val) {
       value = val;
       notifyListeners();
     }
   }
0
likes
100
pub points
55%
popularity

A type safe key/value store backed by Sqlite. It has methods to handle high throughput updates.

Repository (GitHub)
View/report issues

Documentation

API reference

Uploader

ansterj@gmail.com

License

MIT (LICENSE)

Dependencies

cupertino_icons, extra_pedantic, flutter, path_provider, pedantic, sqlcool

More

Packages that depend on kvsql