Я пытаюсь создать простой класс, который обрабатывает действительно простые операции с базой данных, используя этот пакет .
В классе я создаю переменную (база данных с именем db). Я хочу поместить переменную в root класса, чтобы все мои методы могли получить доступ к переменной. Но чтобы инициализировать эту переменную, я должен использовать асинхронную функцию.
class Database {
ObjectDB db;
void openDatabase() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
String dbFilePath = [appDocDir.path, 'user.db'].join('/');
// initialize and open database
db = ObjectDB(dbFilePath);
db.open();
}
void addGroup(Group group) async {
db.insert({"example": "Data"});
}
}
Из-за этого я не могу получить доступ к переменной db в методе addGroup. Как я могу сделать переменную, которая требует асинхронной функции, доступной для всего моего класса?
Я также попытался вернуть переменную db и присвоить ее переменной в root моего класса, но это дает ошибка, только инициаторы c могут быть доступны в инициализаторах.
ObjectDB db = openDatabase();
openDatabase() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
String dbFilePath = [appDocDir.path, 'user.db'].join('/');
// initialize and open database
db = ObjectDB(dbFilePath);
return db;
}