Learn
← Previous Next →

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