我正在尝试将 Sembast 用作应用程序的本地数据库,但在创建和访问数据库中的不同“商店”时遇到了麻烦。
到目前为止,我可以初始化并访问一个商店,但我希望能够创建 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 个独特的商店,然后能够在访问商店中的数据之间切换(比如通过按下按钮我可以循环浏览商店中的数据)?
提前致谢!