Hari 11: Future & async/await
60 min
Last updated 09 Apr 2026
Apa itu Future?
Future merepresentasikan nilai yang akan tersedia di masa mendatang (asynchronous). Digunakan untuk operasi yang membutuhkan waktu: HTTP call, database, file I/O.
Future ambilData() async {
await Future.delayed(Duration(seconds: 2)); // simulasi delay
return "Data dari server";
}
void main() async {
print("Memulai...");
String data = await ambilData();
print("Diterima: $data");
print("Selesai.");
}
Future dengan Error Handling
Future bagi(int a, int b) async {
if (b == 0) throw Exception("Tidak bisa bagi dengan nol!");
return a ~/ b;
}
void main() async {
try {
int hasil = await bagi(10, 2);
print("10 / 2 = $hasil");
int error = await bagi(5, 0);
print("Tidak akan tercetak: $error");
} catch (e) {
print("Error: $e");
}
}
Future.wait — Paralel
Future ambilNama() async {
await Future.delayed(Duration(milliseconds: 500));
return "Budi";
}
Future ambilUmur() async {
await Future.delayed(Duration(milliseconds: 300));
return 25;
}
void main() async {
// Jalankan paralel (lebih cepat dari sequential)
var hasil = await Future.wait([ambilNama(), ambilUmur()]);
print("Nama: ${hasil[0]}, Umur: ${hasil[1]}");
}
💡
Notice: Selalu gunakan try/catch saat await Future yang bisa throw error.
Assignment
Buat Future hitungDiskon dengan validasi dan error handling.
Expected output:
Harga setelah diskon 20%: Rp 400000
Error: Invalid argument(s): Persen diskon harus 0-100!
Dart
main.dart
Solution
Output