Sintaks Utama #
Dart adalah bahasa pemrograman yang dikembangkan oleh Google dengan tujuan untuk digunakan dalam pengembangan aplikasi lintas platform, khususnya aplikasi web dan mobile. Dart memiliki sintaks yang mirip dengan bahasa pemrograman seperti JavaScript dan C#, membuatnya mudah dipelajari bagi pengembang yang sudah familiar dengan bahasa-bahasa tersebut. Berikut ini adalah penjelasan lengkap mengenai sintaks utama dalam bahasa Dart.
Komentar #
Komentar digunakan untuk menulis catatan atau deskripsi dalam kode yang tidak akan dieksekusi oleh program.
- Komentar satu baris: Menggunakan
//
untuk menulis komentar dalam satu baris. - Komentar multi-baris: Menggunakan
/* ... */
untuk menulis komentar yang terdiri dari beberapa baris. - Komentar dokumentasi: Menggunakan
///
atau/** ... */
untuk menulis komentar yang akan digunakan oleh alat dokumentasi seperti DartDoc.
Contoh:
// Ini adalah komentar satu baris
/*
Ini adalah komentar
multi-baris
*/
/// Ini adalah komentar dokumentasi untuk sebuah metode
void metode() {}
Variabel dan Tipe Data #
Dart adalah bahasa pemrograman yang strongly typed, artinya setiap variabel memiliki tipe data yang harus dideklarasikan atau diinferensikan oleh compiler.
- Deklarasi variabel: Menggunakan kata kunci
var
,final
,const
, atau langsung mendefinisikan tipe data (sepertiint
,double
,String
, dll.). - Inisialisasi variabel: Variabel bisa diinisialisasi dengan nilai awal.
Contoh:
// Deklarasi dengan var
var nama = 'Dart'; // Tipe data diinferensikan sebagai String
// Deklarasi dengan tipe data spesifik
int umur = 25;
double tinggi = 1.75;
// Menggunakan final untuk variabel yang tidak bisa diubah
final pi = 3.14;
// Menggunakan const untuk konstanta pada waktu kompilasi
const kecepatanCahaya = 299792458;
Operator #
Dart mendukung berbagai operator untuk operasi aritmatika, perbandingan, logika, dan manipulasi bit.
- Operator aritmatika:
+
,-
,*
,/
,%
,~/
(pembagian integer). - Operator perbandingan:
==
,!=
,>
,<
,>=
,<=
. - Operator logika:
&&
,||
,!
. - Operator bitwise:
&
,|
,^
,~
,<<
,>>
. - Operator penugasan:
=
,+=
,-=
,*=
,/=
,%=
,~/=
,&=
,|=
,^=
,<<=
,>>=
. - Operator null-aware:
??
(pengganti nilai null),??=
(penugasan jika null),?.
(akses kondisional).
Contoh:
int a = 10;
int b = 5;
int hasilTambah = a + b; // 15
int hasilBagi = a ~/ b; // 2 (pembagian integer)
bool sama = (a == b); // false
bool lebihBesar = (a > b); // true
int? c;
int hasilNullAware = c ?? 100; // Jika c null, hasilnya 100
Kontrol Aliran #
Dart memiliki berbagai struktur kontrol aliran untuk pengambilan keputusan dan perulangan.
if
,else if
,else
: Struktur pengambilan keputusan.switch
,case
,default
: Pengambilan keputusan berdasarkan nilai.for
,for-in
: Perulangan.while
,do-while
: Perulangan berdasarkan kondisi.break
,continue
: Menghentikan atau melanjutkan perulangan.return
: Mengembalikan nilai dari fungsi.
Contoh:
int nilai = 85;
if (nilai >= 90) {
print('A');
} else if (nilai >= 80) {
print('B');
} else {
print('C');
}
switch (nilai) {
case 100:
print('Sempurna');
break;
case 85:
print('Bagus');
break;
default:
print('Cukup');
}
for (int i = 0; i < 5; i++) {
print(i);
}
int j = 0;
while (j < 5) {
print(j);
j++;
}
Fungsi #
Fungsi dalam Dart adalah blok kode yang bisa dipanggil dari berbagai tempat dalam program.
- Deklarasi fungsi: Menggunakan tipe pengembalian, nama fungsi, dan parameter.
- Parameter opsional: Parameter bisa didefinisikan sebagai opsional dengan cara
[]
(opsional posisi) atau{}
(opsional bernama). - Fungsi lambda (anonim): Fungsi pendek tanpa nama, sering digunakan sebagai callback.
Contoh:
int tambah(int a, int b) {
return a + b;
}
// Fungsi dengan parameter opsional
void tampilkanPesan(String pesan, [String? pengirim]) {
print('Pesan: $pesan dari ${pengirim ?? 'Anonim'}');
}
// Fungsi dengan parameter bernama opsional
void tampilkanDetail({String? nama, int? umur}) {
print('Nama: $nama, Umur: $umur');
}
// Fungsi lambda
var kaliDua = (int x) => x * 2;
void main() {
print(tambah(3, 5)); // Output: 8
tampilkanPesan('Halo', 'Dart'); // Output: Pesan: Halo dari Dart
tampilkanDetail(nama: 'Ali', umur: 30); // Output: Nama: Ali, Umur: 30
print(kaliDua(4)); // Output: 8
}
Kelas dan Objek #
Dart adalah bahasa berorientasi objek, di mana hampir semuanya adalah objek, bahkan tipe data seperti int
dan double
. Kelas adalah cetak biru untuk objek.
- Deklarasi kelas: Menggunakan kata kunci
class
. - Atribut dan metode: Didefinisikan di dalam kelas.
- Konstruktor: Metode khusus untuk inisialisasi objek.
- Inheritance (pewarisan): Menggunakan
extends
untuk pewarisan. - Mixins: Menggunakan
with
untuk menambahkan kemampuan dari kelas lain tanpa pewarisan.
Contoh:
class Hewan {
String nama;
int umur;
Hewan(this.nama, this.umur);
void bersuara() {
print('$nama bersuara.');
}
}
class Kucing extends Hewan {
String jenis;
Kucing(String nama, int umur, this.jenis) : super(nama, umur);
@override
void bersuara() {
print('$nama mengeong.');
}
}
void main() {
var hewan = Hewan('Hewan Umum', 2);
hewan.bersuara(); // Output: Hewan Umum bersuara.
var kucing = Kucing('Kitty', 3, 'Persia');
kucing.bersuara(); // Output: Kitty mengeong.
}
Collections (Koleksi) #
Dart menyediakan beberapa tipe koleksi seperti List
, Set
, dan Map
.
- List: Koleksi yang diurutkan, bisa berisi duplikat.
- Set: Koleksi yang tidak diurutkan, tidak bisa berisi duplikat.
- Map: Koleksi pasangan kunci-nilai.
Contoh:
void main() {
// List
List<int> angka = [1, 2, 3, 4];
angka.add(5);
print(angka); // Output: [1, 2, 3, 4, 5]
// Set
Set<String> buah = {'apel', 'jeruk'};
buah.add('apel'); // Tidak ada duplikasi
print(buah); // Output: {apel, jeruk}
// Map
Map<String, int> skor = {'Ali': 90, 'Budi': 85};
skor['Cici'] = 88;
print(skor); // Output: {Ali: 90, Budi: 85, Cici: 88}
}
Exception Handling (Penanganan Eksepsi) #
Dart menggunakan try
, catch
, on
, dan finally
untuk menangani eksepsi.
try
: Blok yang bisa menyebabkan eksepsi.catch
: Menangkap eksepsi.on
: Menangkap tipe eksepsi spesifik.finally
:
Blok yang akan dijalankan setelah try
dan catch
, baik ada eksepsi atau tidak.
Contoh:
void main() {
try {
int hasil = 10 ~/ 0;
print(hasil);
} on IntegerDivisionByZeroException {
print('Tidak bisa membagi dengan nol.');
} catch (e) {
print('Terjadi eksepsi: $e');
} finally {
print('Selesai.');
}
}
Asynchronous Programming (Pemrograman Asinkron) #
Dart mendukung pemrograman asinkron dengan Future
, async
, dan await
.
Future
: Mewakili nilai atau kesalahan yang tersedia di masa mendatang.async
: Menandai fungsi sebagai asinkron.await
: Menunggu hasil dariFuture
.
Contoh:
Future<String> fetchData() async {
return await Future.delayed(Duration(seconds: 2), () => 'Data sudah diambil');
}
void main() async {
print('Mengambil data...');
String data = await fetchData();
print(data); // Output: Data sudah diambil
}
Libraries and Packages #
Dart mendukung penggunaan pustaka dan paket untuk modularisasi kode.
import
: Mengimpor pustaka atau paket.export
: Mengekspor pustaka agar bisa digunakan di tempat lain.
Contoh:
import 'dart:math'; // Mengimpor pustaka bawaan Dart
void main() {
int angka = 25;
print(sqrt(angka)); // Menggunakan fungsi sqrt dari pustaka math
}
Kesimpulan #
Dart menyediakan sintaks yang bersih dan terstruktur untuk mengembangkan berbagai jenis aplikasi. Mulai dari variabel, operator, kontrol aliran, hingga pemrograman asinkron, Dart dirancang untuk mudah dipahami dan digunakan. Menguasai sintaks utama Dart adalah langkah pertama untuk memanfaatkan kekuatan penuh dari bahasa ini dalam pengembangan aplikasi.