Fundamental

Tipe data di dalam dart :

  • int: bilangan bulat

  • double: bilangan pecahan

  • num: bisa int atau double

  • String: teks

  • bool: nilai true atau false

  • dynamic: bisa menyimpan tipe apapun

int umur = 25;
double tinggi = 1.75;
String nama = 'Ali';
bool isMenikah = false;
dynamic bebas = 'text';

Variabel dan Constanta

  • var: tipe otomatis tergantung nilai awal.

  • final: tidak bisa diubah setelah deklarasi, tapi bisa membaca perubahan.

  • const: tidak bisa diubah tanpa terkecuali.

//Bisa diubah
var name = "Budi";
name = "Andi";
print("var: $name");
Andi

//Tidak bisa diubah tapi bisa membaca perubahan
final date = DateTime.now();

//Tidak bisa diubah tanpa terkecuali
const pi = 3.14;

Fungsi

void main() {
  final int a = 2;
  final int b = 3;
  
  int hasil(int a, int b) {
    return a + b;
  }
  
  print(hasil(a, b)); // Output: 5
}

atau

void main() {
  final int a = 2;
  final int b = 3;

  int hasil = tambah(a, b);
  print(hasil); // Output: 5
}

int tambah(int a, int b) {
  return a + b;
}

Logic

//If & Else
if (nilai > 80) {
  print('Bagus');
} else {
  print('Kurang');
}

//Switch Case
switch (angka) {
  case 1:
    print('Satu');
    break;
  default:
    print('Bukan satu');
}

//Switch Case Complex
enum CustomerType {
  regular,
  member,
  vip,
  staff,
}

double calculateDiscount(CustomerType type, double total) {
  switch (type) {
    case CustomerType.regular:
      return total * 0.05; // 5% untuk pelanggan biasa
    case CustomerType.member:
      return total * 0.10; // 10% untuk member
    case CustomerType.vip:
      return total * 0.20; // 20% untuk VIP
    case CustomerType.staff:
      return total * 0.25; // 25% untuk karyawan
    default:
      return 0.0;
  }
}

//Switch Case Complex dengan Break
enum OrderStatus {
  pending,
  processing,
  completed,
  canceled,
}

void main() {
  OrderStatus status = OrderStatus.processing;

  switch (status) {
    case OrderStatus.pending:
      print('Order sedang menunggu');
      break;
    case OrderStatus.processing:
      print('Order sedang diproses');
      break;
    case OrderStatus.completed:
      print('Order sudah selesai');
      break;
    case OrderStatus.canceled:
      print('Order dibatalkan');
      break;
  }
}

//For, while & do-while
void main() {
  List<String> names = ["Budi", "Andi", "Siti"];

  // [For loop]
  for (var i = 0; i < names.length; i++) print("$i ${names[i]}");

  // [While loop]
  var j = 0;
  while (j < names.length) {
    print("$j ${names[j]}");
    j++;
  }

  // [Do-while loop]
  var k = 0;
  do {
    print("$k ${names[k]}");
    k++;
  } while (k < names.length);
}

output : 
0 Budi
1 Andi
2 Siti

//List
void main() {
  List<String> fruits = ['Apple', 'Banana', 'Orange'];
  print(fruits[0]); // Output: Apple
}

//Fungsi sebagai parameter
void greeting(String name) {
  print("Hello, $name!");
}

void main() {
  var user = "Budi";
  var func = greeting; // Menyimpan referensi fungsi greeting
  func(user); // Output: Hello, Budi!
}

Collection

//List
List<int> angka = [1, 2, 3];
angka.add(4);

//Set
Set<int> unik = {1, 2, 2, 3}; // hasil: {1, 2, 3}

//Map
void main() {
  Map<String, int> ages = {'Budi': 20, 'Andi': 25, 'Siti': 22};
  print(ages['Budi']); // Output: 20
}

//Class & Object
class Manusia {
  String nama;
  int umur;

  Manusia(this.nama, this.umur);

  void sapa() {
    print('Saya $nama');
  }
}

var orang = Manusia('Dino', 22);
orang.sapa();

Null Safety

Null Safety membantu mencegah error saat kamu mencoba mengakses data yang belum diisi (alias null). Dart memaksa kamu menyatakan apakah suatu variabel bisa null atau tidak.

String? username;

if (username != null) {
  print("Panjang: ${username.length}"); // ✅ Aman
} else {
  print("Username masih kosong");
}

Last updated