Dart

Dart merupakan bahasa pemrograman yang digunakan dalam pengembangan aplikasi Flutter. Sehingga jika kita ingin mengembangkan aplikasi dengan Flutter maka kita harus menguasai Dart terlebih dahulu. Berhubung dalam waktu dekat saya diminta untuk mengisi materi flutter maka saya akan membuat tulisan pendahuluan terlebih dahulu pada blog ini. Tulisan ini mungkin akan dibuat berseri dan mungkin juga tidak, mengingat sudah banyak tulisan berseri yang ternyata tidak sempat saya lanjutkan. Pada tulisan ini kita akan mempelajari dasar pemrograman dart. Pada tulisan ini kita akan membahas dasar dart sehingga anda dapat dikatakan menguasai bahasa ini dalam tingkat paling fundamental, yaitu mengenai 

  1. Mengenal Dart
  2. Variabel dan Tipe Data
  3. Conditional
  4. Loop
  5. Fungsi

Mengenal Dart

Dart dirilis dan dikembangkan oleh Google. Pertama kali dirilis pada 2011 dan didesain untuk menggantikan Javascript dalam pengembangan perangkat lunak (tentunya bukan menggantikan peran javascript dalam browser, tapi lebih pada tren javascript pada backend maupun aplikasi native). Sampai saat tulisan ini dibuat dart sudah berada pada versi 2.4.

Dart memiliki banyak kesamaan dengan bahasa lain seperti Java, kotlin, Typescript, dan tentunya Javascript. Karakteristik dari bahasa pemrograman dart diantaranya yang dapat saya lihat adalah:

  1. Static Typed
  2. Type inference
  3. String Expressions
  4. Mendukung OOP dan functional programming

Meskipun static typed namun pada dasarnya terdapat rasa-rasa dynamic typed pada bahasa dart. Oleh sebab itu saya sering memberikan ungkapan "anti static static type pada bahasa pemrograman ini.

 Sebelum kita melanjutkan pada dasar dart, bagi anda yang ingin mencoba tanpa menginstall dart pada komputer anda, anda dapat mencoba bahasa ini menggunakan DartPad yang dapat anda kunjungi pada laman https://dartpad.dartlang.org/.

Memulai Koding dalam Dart

Aplikasi Dart dimulai dengan pemanggilan fungsi 'main'.  Fungsi main merupakan void dalam artian tidak akan memberikan return apapun. Kurung kurawal diantara fungsi sama seperti bahasa lain merupakan tanda pada baris mana kode akan dieksekusi pada fungsi main.

 

void main() 
{
// Kode anda ditulis di baris ini
}

 

Variabel dan Tipe Data

Selanjutnya kita akan mempelajari bagaimana mendeklarasikan dan menggunakan variabel dalam dart. Sama seperti java dan javascript, anda cukup menuliskan nama variabel dan assign nilai dari variabel. Untuk menggunakan variabel dengan menuliskan nama variabel yang ingin digunakan.

void main()
{
/*
kita mendeklarasikan variabel myAge kemudian memberi nilai 29
*/
var myAge = 29;
// Selanjutnya kita tampilkan nilai dari variabel tersebut pada console
print(myAge);

}

Terasa seperti dynamic type bukan. Tapi Boong :-) Setiap variabel dalam dart sebenarnya sudah di inference sesuai dengan nilai yang ada. Pada contoh di atas variabel myAge memiliki tipe integer, maka tipe ini akan digunakan terus menerus. Perubahan tipe tidak dapat dilakukan pada saat program berjalan.

Cara penulisan kode yang lebih berciri static dapat anda lihat pada baris berikut

void main()
{
/*
kita mendeklarasikan variabel myAge kemudian memberi nilai 29
*/
int myAge = 29;
// Selanjutnya kita tampilkan nilai dari variabel tersebut pada console
print(myAge);

}

Beberapa tipe data yang ada pada dart antara lain int, double, bool, String, dan dynamic. Satu hal yang menarik adalah tipe data dynamic, yang mungkin menjadi ciri dari "anti static static typed" seperti yang saya sebutkan di awal.

Immutability dan Nullability

Selain penamaan variabel konvensional tersebut kita juga dapat memberikan sifat immutability pada variabel. Kita dapat menggunakan const dan final untuk memberi immutability. Const digunakan apabila kita sudah memberi nilai untuk variabel dan tidak akan dapat diubah lagi sepanjang aplikasi berjalan. Apabila kita belum memiliki nilai dan akan membuat nilai tidak dapat diubah lagi begitu nilai diberikan, maka kita gunakan final

Semua variabel dalam dart akan bernilai null jika belum di-assign nilai pada variabel tersebut. Dan akan diberi nilai jika sudah di assign. Oleh karena itu jangan sampai menggunakan const tanpa memberi nilai pada variabel.

Dari dua karakter tersebut, sekali lagi saya akan mengatakan bahwa bahasa ini adalah "anti static static typed". He..he..he..

Conditional

Conditional dalam dart sama seperti bahasa lain. Menggunakan blok if-else if-else. Contoh dari penggunaan conditional  dalam dart seperti kode di bawah ini.

void main()
{
int myAge = 29;
if(myAge <= 10) {
print("Anda masih anak-anak");
}else if (myAge > 10 && myAge <= 17) {
print("Anda sudah remaja");
}else{
print("Anda sudah dewasa");
}

// kode di atas akan memberi output "Anda sudah dewasa"
}

Loop

Loop atau pengulangan adalah must known dalam belajar suatu bahasa pemrograman (sebenarnya semua tulisan ini merupakan dasar dalam menguasai bahasa pemrograman, tapi loop ini mungkin jadi satu pembeda dari kemampuan dasar lain. Pada tulisan ini penulis akan mencontohkan pengulangan dengan while, for, dan foreach.

While

While pada dart dapat berupa blok while  atau do-while. Penggunaannya sama seperti bahasa pemrograman lainnya. Contohnya seperti di bawah ini.

void main()
{
var i = 1;
while (i < 5) {
print(i);
i++;
}
// kode di atas akan memberi output 1 - 4
}

for

Penggunaan for pada dart secara garis besar sama pada bahasa pemrograman java, C, php, dan lainnya. For berisi initialisasi, kondisi pengulangan, dan pemrosesan initialisasi saat pengulangan dilakukan. Contoh penggunaan for pada dart seperti di bawah ini.

void main()
{
for (var i = 1; i < 5; i++) {
print(i);
}
// kode di atas akan memberi output 1 - 4
}

foreach

foreach pada banyak bahasa pemrograman biasanya berbeda satu sama lain. Menggunakan foreach sangat lekat dengan array. Pada bahasa dart mekanisme foreach dapat dilakukan dengan pendekatan for atau menggunakan method forEach yang ada pada tipe data array. Dengan menggunakan for seperti dibawah ini. 

void main()
{
var numbers = [1,2,3,4];
for(var number in numbers) {
print(number);
}
// kode di atas akan memberi output 1 - 4
}

Sedangkan dengan method forEach seperti di bawah ini.

void main()
{
var numbers = [1,2,3,4];
numbers.forEach((number) => print(number));
// kode di atas akan memberi output 1 - 4
}

Pada contoh di atas kita menggunakan anonymous function dengan arrow syntax, penggunaan fungsi akan kita bahas pada bagian selanjutnya dari tulisan ini.

Fungsi

Fungsi pada dart sama seperti pada bahasa lain. Karakteristik fungsi pada dart diantaranya 

  1. Dapat ditentukan tipe return dan dapat juga tidak (dart akan menentukan tipe berdasarkan return dari fungsi) sehingga lagi-lagi makin menegaskan dart sebagai bahasa "anti static static type" (untuk kesekian kalinya saya menulis ini)
  2. Tidak harus ditulis dalam fungsi main, dapat juga diluar dan closure tetap dapat digunakan
  3. Dapat menggunakan opsional parameter dengan menggunakan kurung kotak []
  4. Mendukung first-class functions sehingga fungsi dapat menjadi variabel, argument dalam fungsi, atau merupakan return dari fungsi lain
  5. Mendukung anonymous function dan bagi anda pengguna js maka dipermudah juga dengan penggunaan arrow syntax

Dari karakteristik tersebut kita akan coba membuat fungsi dengan menggunakan empat karakteristik awal (sedangkan untuk karakteristik 5 sudah kita coba pada contoh di seksi sebelumnya). Pada contoh ini kita akan membuat fungsi yang memeriksa apakah angka yang diberikan merupakan angka genap.

void main()
{
var number = 29;
string tellMeIsEven(int value, bool Function(int) op)
{
if (op(value) == true) return "Ini Genap";
return "Ini Ganjil";
}
print(tellMeIsEven(number, isEven));
// kode di atas akan memberi output Ini Ganjil
}

bool isEven(int number)
{
if(number%2 == 0) return true;
return false;
}

Fungsi di atas kita membuat fungsi isEven untuk memeriksa apakah suatu angka adalah angka genap. Kemudian kita membuat first-class function untuk memberikan kalimat yang menyatakan suatu angka adalah genap/ganjil lewat fungsi isEven yang sebelumnya telah kita buat.


Ketika anda sudah mengusai hal-hal di atas, menurut saya anda sudah dapat dianggap menguasai bahasa pemrograman dart. Walaupun tentunya tantangan implementasi ke depan masih sangat banyak. Dengan menguasai dart anda siap mempelajari flutter yang menggunakan bahasa pemrograman dart. Semoga bermanfaat dan Happy Coding!