kvsql 0.3.0
Kvsql #
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();
}
}
Changelog #
0.3.0 #
- Update dependencies
- Add
count
methods with expresssions - Better exceptions management
- Add an
isReady
getter toKvStore
0.2.1 #
- Add support for boolean type
- Allow dynamic list and map values
- Fix in case of empty list value
- Add a quiet parameter to selectSync
- Add an example for persistant state
0.2.0 #
- Major change: the methods are now type safe and require a type to be declared: ex:
store.insert<int>("key", 3)
- Add the
hasKey
method - Add the
count
method - Update dependencies
- Fix in upsert method
- Fix in database path
- Return null in select if no value is found
0.1.0 #
Initial
example #
A new Flutter project.
Getting Started #
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies:
kvsql: ^0.3.0
2. Install it
You can install packages from the command line:
with Flutter:
$ flutter pub get
Alternatively, your editor might support flutter pub get
.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
import 'package:kvsql/kvsql.dart';
Popularity:
Describes how popular the package is relative to other packages.
[more]
|
65
|
Health:
Code health derived from static analysis.
[more]
|
100
|
Maintenance:
Reflects how tidy and up-to-date the package is.
[more]
|
100
|
Overall:
Weighted score of the above.
[more]
|
82
|
We analyzed this package on Dec 4, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.6.1
- pana: 0.12.21
- Flutter: 1.9.1+hotfix.6
Platforms
Detected platforms: Flutter
References Flutter, and has no conflicting libraries.
Dependencies
Package | Constraint | Resolved | Available |
---|---|---|---|
Direct dependencies | |||
Dart SDK | >=2.1.0 <3.0.0 | ||
cupertino_icons | ^0.1.2 | 0.1.3 | |
extra_pedantic | ^1.1.1+1 | 1.1.1+3 | |
flutter | 0.0.0 | ||
path_provider | ^1.4.0 | 1.4.5 | |
pedantic | ^1.6.0 | 1.8.0+1 | |
sqlcool | ^4.1.0 | 4.1.1 | |
Transitive dependencies | |||
collection | 1.14.11 | 1.14.12 | |
meta | 1.1.7 | 1.1.8 | |
path | 1.6.4 | ||
platform | 2.2.1 | ||
sky_engine | 0.0.99 | ||
sqflite | 1.1.7+3 | ||
synchronized | 2.1.0+2 | ||
typed_data | 1.1.6 | ||
vector_math | 2.0.8 | ||
Dev dependencies | |||
flutter_test |