Поскольку обе операции возвращают Future, для этих двух операций нет другого способа. Чтобы ожидать нескольких фьючерсов с одним ожиданием, вам нужно добавить его в список фьючерсов, а затем использовать Future.wait, но, как правило, в этом случае он более уродлив и бесполезен.
var futures = <Future>[];
futures.add(operationThatReturnAFuture());
futures.add(operationThatReturnAFuture());
await Future.wait(futures);
Дарт не поддерживает такого рода цепочку между await, но я понимаю, что в этом случае это выглядит странно.
Возможно, если вы измените переменные строки на метод, код будет выглядеть немного чище.
Например, что-то вроде:
getUser(int id) async {
final db = await database;
var res = await db.query("User", where: "id = ?", whereArgs: [id]);
return res.isNotEmpty ? User.fromMap(res.first) : Null ;
}