Langsung ke konten utama

Apa itu Dart Future?


Apa Itu Dart Future?


Penerima dari future dapat menentukan callbacks yang akan menangani nilai atau kesalahan tersebut.
Sekarang coba perhatikan kode berikut:


  1. void main() {

  2.   print('Creating the future');

  3.   print('main() done');

  4. }



Tentunya Anda sudah mengetahui urutan program dan apa saja yang akan ditampilkan di panel kontrol. Bagaimana jika kita memindahkan urutan perintah print pertama ke objek tersebut pada objek future.


  1. void main() {

  2.   final myFuture = Future(() {

  3.     print('Creating the future');

  4.     return 12;
  5.   });

  6.   print('main() done');

  7. }



Jika kode di atas dijalankan, maka fungsi main akan dieksekusikan sebelum fungsi yang ada di dalam Future(). Hal ini disebabkan apabila future masih berstatus uncompleted. Sehingga jika program dijalankan, permukaan konsol akan tampil seperti berikut:


  1. main() done

  2. Creating the future



Lantas bagaimana caranya kita membuat dan memanfaatkan future ini?

Uncompleted

Mari kita buat sebuah fungsi yang mengembalikan nilai Future.


  1. Future<String> getOrder() {

  2.   return Future.delayed(Duration(seconds: 3), () {

  3.     return 'Coffee Boba';

  4.   });
  5. }



Di Future kita dapat menambahkan method delayed untuk menunda eksekusi kode di  Future. Dimana parameter pertama berisi periode penundaan dan parameter kedua adalah blok kode atau fungsi yang akan dieksekusi.
Dalam hal ini kami menggunakan penundaan untuk menunda waktu eksekusi seolah-olah kami sedang mengambil data dari internet.
Karena nilai yang dikembalikan di Future berupa String, kita dapat secara eksplisit menentukan tipe parameter generik Future.

Completed with data

Kemudian setelah Future dijalankan, kita memerlukan handler untuk menangani status completed with data. Caranya gunakan method .then() dari objek Future.


  1. void main() {

  2.   getOrder().then((value) {

  3.     print('You order: $value');

  4. });
  5.   print('Getting your order...');

  6. }



Fungsi getOrder() akan dijalankan secara asynchronous hingga setelah 3 detik kode Future akan dijalankan dan mengembalikan nilai.


  1. Getting your order...

  2. You order: Coffee Boba  // Muncul setelah 3 detik



Bagaimana jika objek Future() mengembalikan kondisi "completed with error?" Bagaimana cara mengelolanya?

Completed with error

Kita kemudian dapat menambahkan method.catchError() setelah then. Jadi ketika terjadi kesalahan atau pengecualian di Future, blok kode ini akan dieksekusi. Mari kita ubah sedikit kode di atas untuk mengakomodasi skenario completed with error.
  1. void main() {
  2.   getOrder().then((value) {
  3.     print('You order: $value');
  4.   })  .catchError((error) {
  5.     print('Sorry. $error');
  6. });
  7.   print('Getting your order...');
  8. }
  9.  
  10. Future<String> getOrder() {
  11.   return Future.delayed(Duration(seconds: 3), () {
  12.     var isStockAvailable = false;
  13.     if (isStockAvailable) {
  14.       return 'Coffee Boba';
  15.     } else {
  16.       throw 'Our stock is not enough.';
  17. }
  18.   });}

Pada titik ini, Anda sudah familiar dengan tiga keadaan pada Future dan cara menulis kode untuk menanganinya. Seperti pada main(), ada tiga blok kode yang mewakili keadaan masa depan:
  1. Fungsi getOrder() berisi Future yang  uncompleted.
  2. Metode then() menangani kondisiComplited with Data.
  3. Metode CatchError() menangani kondisi Complited with Error.
Ada metode lain yang bisa kita gunakan yaitu whenComplete(). Metode ini akan dijalankan ketika  fungsi Future selesai dijalankan, baik mengembalikan nilai atau kesalahan. Ini seperti blok terakhir dalam try-catch-finally.


  1. void main() {

  2.   getOrder().then((value) {

  3.     print('You order: $value');

  4.   })
  5.   .catchError((error) {

  6.     print('Sorry. $error');

  7.   })

  8.   .whenComplete(() {

  9.     print('Thank you');  });

  10.   print('Getting your order...');

----------------------------------------------------------------------------

Postingan populer dari blog ini

Penggunaan Rumus di Libre Office Writer

Libre Office Writer merupakan salah satu paket dari Libre Office yang merupakan aplikasi yang digunakan untuk pengetikan tulisan secara digital seperti layaknya menggunakan aplikasi Microsoft Word. Aplikasi ini disajikan gratis untuk Windows, MacOS, dan Linux. Selain sebagai aplikasi pengolah kata, Libre Office writer juga dapat mengolah angka walau tidak sepenuhnya seperti saudaranya yaitu Libre Office Calc.  Pertama membuat table dengan angka, dan kolom paling kanan akan diisi menggunakan rumus. Kedua kita akan menghitung ketiga kolom tersebut menggunakan rumus =sum. Pertama tekan tombol "=" lalu diatas akan muncul menu perhitungan seperti di bawah ini.  Ketiga masukan rumus "SUM" seperti di bawah ini. Dan hasilnya sepeti ini. Untuk daftar rumus yang pernah dicoba: =sum(<A1><C1>) =<B2>/<C2> =10*100 =INT(<B4>/<C4>) Hsilnya seperti ini: Note: sebelumnya saya juga pernah menggunakan rumus average dan ternyata bisa.  Penggunaan rumu...

Cara Mengganti Gambar Pada Image Slider di Slims 9

Slims atau Slims Senayan  adalah aplikasi perpustakaan yang dikjembangkan oleh tim dari Pusat Informasi dan Humas Departemen Pendidikan Nasional Republik Indonesia ini dibangun dengan menggunakan PHP, basis data MySQL.(Bisa baca lebih lanjut di https://slims.web.id atau disini .

Berbagi Jaringan Menggunakan Bluethoot dari Ponsel ke Laptop

Kemajuan teknologi saat ini, internet menjadi kebutuhan mendasar bagi banyak orang. Namun, biaya internet yang tinggi menjadi hambatan bagi banyak individu untuk memperoleh akses yang stabil. Solusinya adalah dengan berbagi jaringan internet dengan teman dan tetangga Anda. Selain biaya internet yang lebih murah, Anda dapat memperkuat hubungan sosial Anda di lingkungan sekitar. Dalam berbagi jaringan dari ponsel ke laptop biasanya lebih mudah menggunakan Hotspot, selain itu juga dapat menggunakan jaringan bluethoot. Pertama buka pengaturan pilih hotspot & berbagi jaringan. Kedua hidupkan penambatan Bluethooth. Ketiga telusuri menu bar dibawah untuk menemukan icon bluethoot kemudian pilih join personal network. Kelima pilih ponsel yang mau hubungkan, kemudian pilih access point. Setelah diklik maka akan muncul gambar di bawah ini. Untuk tampilan seperti itu saya menggunakan ponsel merek techno spark 20 dan menggunakan windows 10 untuk saling terhubung berbagi jaringan. Mungkin ada pe...