Skip to content

sembast を試す

Flutter でモバイルだけでなくデスクトップや Web などマルチプラットフォームに対応している NoSQL データベースライブラリ sembast を使ってみたのでメモ.

sembast | Dart Package

DB から JSON への export,import に対応しているんだけどそれなりにしないと import できない.

tekartik/sembast.dart

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');

tekartik/sembast.dart

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 を公開しているのでこれを使う.

tekartik/app_flutter_utils.dart

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 対応を進めてるらしいのでそれの動向も気になる.