Pemrograman asinkron (asynchronous programming) di Dart adalah salah satu fitur penting yang memungkinkan aplikasi tetap responsif, terutama saat menghadapi operasi yang memakan waktu, seperti pengambilan data dari internet, membaca file, atau melakukan komputasi yang berat. Dart menyediakan dua komponen utama untuk menangani operasi asinkron: Future dan Stream.
1. Future
Future merepresentasikan nilai tunggal yang tersedia di masa depan, biasanya setelah operasi async selesai. Misalnya, mengambil data dari internet, membaca file, atau delay tertentu.
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
return "Data berhasil diambil!";
}
-
Cara menggunakan
FutureAda dua cara untuk menggunkan
futureyang pertama denganawait.void getData() async { print("Memulai pengambilan data..."); String data = await fetchData(); print(data); }Dengan
awaitkita harus menambahkanasyncdi depan fungsi, menggunakanawaitjuga lebih mudah di baca.Lalu yang kedua dengan
thenvoid getData() { print("Memulai pengambilan data..."); fetchData().then((data) { print(data); }).catchError((e) { print("Terjadi error: $e"); }); }Menggunakan
thenini lebih klasik.
2. Stream
Stream digunakan untuk menangani serangkaian data/event yang datang secara berurutan dari waktu ke waktu, Misalnya:
-
Input dari user
-
Sensor data
-
Data real-time (chat, notifikasi)
-
Response WebSocket
Contoh membuat
streamStream<int> countNumbers(int max) async* { for (int i = 1; i <= max; i++) { await Future.delayed(Duration(seconds: 1)); yield i; // Mengirim nilai ke stream } }Cara memanggil menggunakan
listen()countNumbers(5).listen((number) => print(number)); // Output: 1, 2, 3, 4, 5 (per 1 detik)Cara memanggil menggunakan
async/await forvoid main() async { await for (int number in countNumbers(3)) { print("Angka: $number"); } }
3. Perbedaan Future vs Stream
| Fitur | Future | Stream |
|---|---|---|
| Nilai | Single value (1x) | Multiple values (berkelanjutan) |
| Contoh | Fetch API sekali | Chat app, sensor data |
| Completion | Selesai setelah dapat nilai | Bisa terus mengeluarkan data |
Kesimpulan
Dengan menguasai Future & Stream, kita bisa membangun aplikasi Dart/Flutter yang efisien dan responsive, serta kita bisa mengambil data dari internet, membaca file atau melakukan proses berat yang membutuhkan waktu.
Artikel ini dibaca sebanyak 1.614 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...