Belajar Dart Dasar 9#: Async Programming (Future & Stream) dalam Dart


👍 0 ❤️ 0 💡 0 🔥 0 🙌 0 🥳 0
Belajar Dart Dasar 9#: Async Programming (Future & Stream) dalam Dart

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 Future

    Ada dua cara untuk menggunkan future yang pertama dengan await.

    void getData() async {
      print("Memulai pengambilan data...");
      String data = await fetchData();
      print(data);
    }
    

    Dengan await kita harus menambahkan async di depan fungsi, menggunakan await juga lebih mudah di baca.

    Lalu yang kedua dengan then

    void getData() {
      print("Memulai pengambilan data...");
      fetchData().then((data) {
        print(data);
      }).catchError((e) {
        print("Terjadi error: $e");
      });
    }
    

    Menggunakan then ini 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 stream

    Stream<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 for

    void 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.


Faisal Mahadi
Mobile Apps Developer | Android Enthusiast | Keep Learning | Android Dev Serta Owner Hariankoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami