У меня есть сообщение об ошибке асинхронной функции. Я использую await, и моя функция четко определена как асинхронная. Чтобы быть более точным c, ошибка относится к последней строке моего кода (когда я вызываю функцию getObjects ()).
Мой код в основном основан на документации, поэтому я довольно удивлен перед лицом ошибки.
Сообщение об ошибке:
{
"resource": "/Users/MyName/Documents/Development/thesafe1/lib/main.dart",
"owner": "dart",
"code": "await_in_wrong_context",
"severity": 8,
"message": "The await expression can only be used in an async function.\nTry marking the function body with either 'async' or 'async*'.",
"source": "dart",
"startLineNumber": 52,
"startColumn": 31,
"endLineNumber": 52,
"endColumn": 36,
"tags": []
}
Мой код:
//Open database
final Future<Database> database = getDatabasesPath().then((String path) {
return openDatabase(join(path, 'database.db'), onCreate: (db, version) {
return db.execute(
//"CREATE TABLE objects(uuid TEXT PRIMARY KEY, objectName TEXT, price REAL, category TEXT"
"CREATE TABLE objects(uuid TEXT PRIMARY KEY, objectName TEXT)"
);
}, version: 1);
});
//Functions to access the database of objects : insert, get
//Function to insert object in the database
Future<void> insertObject(MyObject object) async {
final Database db = await database;
await db.insert('objects', object.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace);
}
Future<List<MyObject>> getObjects() async {
final Database db = await database;
final List<Map<String, dynamic>> maps = await db.query('objects');
return List.generate(maps.length, (i){
return MyObject(
uuid: maps[i]['uuid'],
objectName: maps[i]['objectName']
);
});
}
List<MyObject> myObjectList = await getObjects();
Спасибо