【发布时间】:2025-12-06 05:50:02
【问题描述】:
我有一个函数可以从 SQFlite db 获取带有 id 的对象,
var unit = await getUnitById(1);
函数长这样
Units getUnitById(int svrId) {
db.initializeDatabase();
Future<Units> unit = db.getUnitsBySvrId(1);
unit.then((value) {
print(value);
});
}
数据库助手(db)中的函数如下所示:
Future<Units> getUnitsBySvrId(int svrId) async {
if (svrId != null) {
var unitsMapList = await getUnitMapListById(svrId);
return Units.fromMapObject(unitsMapList[0]);
} else
return null;
}
查询执行如下所示:
Future<List<Map<String, dynamic>>> getUnitMapListById(int id) async {
Database db = await this.database;
// var result = await db.rawQuery('SELECT * FROM $DOG_TABLE order by $ID ASC');
var result =
await db.rawQuery('SELECT * FROM $UNIT_TABLE WHERE $SERVER_ID = $id');
return result;
}
我需要获取 Units 对象并使用它,但是当我调用该函数时,它会等待并执行下面的代码,并且 unit 为空,因此我的任务失败了。我需要等到我从数据库中获取数据。
我怎样才能做到这一点??
我对使用这个 async/await 感到很困惑。
【问题讨论】:
标签: android flutter dart async-await sqflite