Dasar Dart: Future & async/await

Memahami pekerjaan yang butuh waktu, Future, async/await, dan menangani kegagalan dengan try/catch.

Part 19 dari 23 ± 40 menit Gratis

Pekerjaan yang butuh waktu

Sebagian pekerjaan tidak selesai seketika: mengambil data dari internet, membaca file, atau menunggu database. Jika aplikasi berhenti menunggu, layar akan membeku. Dart menyelesaikannya dengan Future: "janji" bahwa hasilnya akan datang nanti.

Analogi: kamu memesan makanan di restoran. Pelayan memberi nomor antrean (Future). Kamu tidak berdiri di dapur; kamu menunggu sambil duduk (aplikasi tetap responsif), lalu makanannya datang.

Function yang mengembalikan Future

Future<String> ambilNama() async {
  await Future.delayed(const Duration(seconds: 1));   // pura-pura menunggu 1 detik
  return 'Sari';
}
  • Future<String> = "janji yang berisi String". Tipe di dalam < > adalah jenis hasilnya.
  • async = tanda bahwa function ini boleh menunggu di dalamnya.
  • await = "tunggu sampai hasil ini selesai, lalu lanjut". Hanya boleh dipakai di dalam function async.

Memakai hasil Future

Future<void> main() async {
  print('Mulai');
  final nama = await ambilNama();   // menunggu 1 detik
  print('Halo, $nama');             // dijalankan setelah nama tersedia
}

Tanpa await, variabel nama hanya berisi "janji", bukan teks "Sari". Itu kesalahan yang sangat umum. Future<void> dipakai untuk function async yang tidak mengembalikan nilai.

Bagaimana kalau gagal?

Future bisa berakhir dengan error (misalnya internet putus). Tangkap dengan try/catch:

Future<void> gagal() async {
  throw Exception('koneksi putus');
}

try {
  await gagal();
} catch (e) {
  print('Error: $e');
}

throw melempar error; catch menangkapnya sehingga aplikasi tidak crash dan kamu bisa menampilkan pesan yang ramah.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X