Dugaan saya adalah Anda ingin melakukan sesuatu seperti ini (Perhatikan kode yang belum diuji):
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);
}
Sudahkah Anda membaca artikel ini tentang menggunakan Futures?
Poin kuncinya adalah jika suatu metode tidak sinkron, dan kode panggilan perlu menunggu sampai selesai, maka metode tersebut harus mengembalikan objek Future (atau Stream dalam beberapa kasus). Tidak ada cara di Dart untuk mendapatkan fungsi untuk "memblokir" menunggu hasil asinkron. Jangan ragu untuk mengajukan beberapa pertanyaan lagi di komentar.