Ich vermute, Sie möchten so etwas tun (beachten Sie den ungetesteten Code):
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);
}
Haben Sie diesen Artikel gelesen über die Verwendung von Futures?
Der entscheidende Punkt ist, wenn eine Methode asynchron ist und der aufrufende Code warten muss, bis sie abgeschlossen ist, muss sie ein Future-Objekt (oder in einigen Fällen einen Stream) zurückgeben. Es gibt in Dart keine Möglichkeit, eine Funktion dazu zu bringen, auf ein asynchrones Ergebnis zu warten. Fühlen Sie sich frei, weitere Fragen in den Kommentaren zu stellen.