アプリのローカル データベースとして Sembast を使用しようとしていますが、データベース内のさまざまな「ストア」の作成とアクセスに問題があります。
これまでのところ、1 つのストアを初期化してアクセスできますが、3 つの異なるストアを作成し、必要に応じてそれぞれにアクセスできるようにしたいと考えています。これまでの私のコードを以下に示します。
データベースと一意のストアの作成:
class SembastActivityRepository extends ActivityRepository {
final String activityName; //available paths are log, user_preferences,
final StoreRef<int, Map<String, dynamic>> _store;
final Database _database = GetIt.I.get();
SembastActivityRepository({this.activityName})
: _store = intMapStoreFactory.store(activityName);
@override
Future<int> insertActivity(Activity activity) async {
return await _store.add(_database, activity.toMap());
}
@override
Future updateActivity(Activity activity) async {
await _store.record(activity.id).update(_database, activity.toMap());
}
...
}
「Sleep」というタイトルのデータベースとストアを初期化します。
class Init {
//final String activityName;
//Init(this.activityName);
static Future initialize() async {
//initialize Sembast database
final appDir = await getApplicationDocumentsDirectory();
await appDir.create(recursive: true);
final databasePath = join(appDir.path, "sembast.db");
final database = await databaseFactoryIo.openDatabase(databasePath);
GetIt.I.registerSingleton<Database>(database);
//register Repository
GetIt.I.registerLazySingleton<ActivityRepository>(
() => SembastActivityRepository(activityName: 'Sleep'));
}
...
}
3 つの一意のストアを作成し、後でストア内のデータへのアクセスを切り替えることができるようにするにはどうすればよいでしょうか (たとえば、ボタンを押すと、ストア内のデータを切り替えることができます)。
前もって感謝します!