Flutter でモバイルだけでなくデスクトップや Web などマルチプラットフォームに対応している NoSQL データベースライブラリ sembast を使ってみたのでメモ.
sembast | Dart package
NoSQL persistent embedded file system document-based database for Dart VM and Flutter with …
JSON から DB をつくる
DB から JSON への export,import に対応しているんだけどそれなりにしないと import できない.
sembast.dart/sembast/doc/storage_format.md at master · tekartik/sembast.dart
Simple io database. Contribute to tekartik/sembast.dart development by creating an account on …
import 'package:sembase/utils/semast_import_export.dart';
var stores = {
'name': 'message'
'keys': keys,
'values': values,
};
var data = {
'sembase_export': 1,
'version': 1,
stores: [stores],
};
var db = await importDatabase(data, databaseFactory, 'mydata.db');
クエリ
sembast.dart/sembast/doc/queries.md at master · tekartik/sembast.dart
Simple io database. Contribute to tekartik/sembast.dart development by creating an account on …
var store = stringMapStoreFactory.store('message');
var finder = Finder(filter: Filter,matches('message', query);
var records = store.find(_db, finder: finder);
records.then((value) =>
setState(() =>
_records.addAll(value.map((e)=>e.value).toList())));
マルチプラットフォーム対応
DB を作成するときにモバイルと Web とかで databaseFactory が違うんだけど作者がええかんじにする utils を公開しているのでこれを使う.
app_flutter_utils.dart/app_sembast at master · tekartik/app_flutter_utils.dart
Flutter utilities. Contribute to tekartik/app_flutter_utils.dart development by creating an account …
import 'package:tekartik_app_flutter_idb/app_sembast.dart';
var packageName = 'net.hugahuga.hogehoge';
var databaseFactory = getDatabaseFactory(packageName: packageName);
var db = await importDatabase(data, databaseFactory, 'mydata.db');
おわり
これまで sqflite 使っていたけど Web に対応してないし,これを機に sembast にしてもいいかも. Realm が Dart 対応を進めてるらしいのでそれの動向も気になる.