Hádám, že chcete udělat něco takového (Všimněte si netestovaného kódu):
Future<DBObject> load(DBObject object, String id) {
var query = "select ... where id='$id'"; // Note: check for SQL injection.
return pool.query(query)
.then((result) => result.toList())
.then((list) => list.forEach((row) => object.import(row)))
.then((_) => object);
}
Četli jste tento článek o používání Futures?
Klíčovým bodem je, pokud je metoda asynchronní a volající kód musí čekat na její dokončení, pak musí vrátit objekt Future (nebo v některých případech Stream). V Dartu neexistuje žádný způsob, jak získat funkci, která by "blokovala" čekání na asynchronní výsledek. Neváhejte se zeptat na další otázky v komentářích.