LAPRAK 1 Aplikasi Mobile
- Pengertian
Dart adalah bahasa pemrograman berorientasi objek (OOP) yang dikembangkan oleh Google dan pertama kali diperkenalkan pada tahun 2011 oleh Lars Bak dan Kasper. Dirancang dengan sintaks mirip C, Java, dan JavaScript, Dart mudah dipelajari oleh pengembang yang sudah familiar dengan bahasa-bahasa tersebut. Bahasa ini mendukung pemrograman multi-paradigma—mulai dari fungsional, imperatif, hingga reflektif—serta memiliki fitur seperti class-based, garbage collection, mixins, generics, dan type inference. Dart unggul dalam kinerja karena mendukung kompilasi Just-in-Time (JIT) untuk pengembangan cepat dan Ahead-of-Time (AOT) untuk performa optimal pada saat runtime. Sejak versi 2.12, Dart menerapkan sound null safety, sehingga menghindari potensi NullPointerException kecuali variabel secara eksplisit diizinkan null, dan sejak Dart 3 semua kode harus mematuhi null safety. Salah satu daya tarik utama Dart adalah perannya sebagai bahasa utama Flutter, framework open-source Google untuk membangun aplikasi lintas platform—Android, iOS, web, maupun desktop—dengan satu basis kode+. Selain itu, Dart juga digunakan dalam pengembangan aplikasi web (dengan kompilasi ke JavaScript atau WebAssembly), aplikasi server-side, dan desktop. Ekosistemnya ditunjang oleh manajer paket pub.dev, berbagai pustaka, serta tooling seperti DevTools dan editor plugin, yang memperlancar pengalaman pengembang.
Pada pertemuan pertama praktikum ini, kita akan menginstall dan mengkonfigurasi Dart di perangkat.
2. Instalasi
Sebelum install SDK Dart pastikan arsitektur hardware telah memenuhi persyaratanminimum, Adapun persyaratan minimum yang dibutuhkan untuk install SDK Dart seperti gambar berikut

Untuk menginstall SDK Dart dapat menggunakan beberapa cara yaitu dapat menggunakan Chocolatey atau dapat langsung download file SDK dalam bentuk ZIP kemudian di extract pada perangkat. Kita akan menginstall menggunakan Chocolatey.
Untuk menginstall Chocolatey caranya cukup mudah. Kita hanya perlu pergi ke PowerShell (admin) kemudian ketikkan kode perintah berikut:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Kemudian, klik “y” jika muncul di command prompt dan tunggu beberapa saat. Jika sudah terinstall, kita bisa mengecek dengan perintah berikut:
choco -v
Hasilnya akan seperti berikut:

Setelah install Chocolatey, barulah kita bisa menginstall dart di perangkat kita. Caranya dengan memasukkan perintah berikut di command prompt:
choco install dart-sdk
JIka berhasil diinstall, maka cek dengan masukkan keyword “dart” di Command Prompt. Jika berhasil maka tampilannya akan seperti berikut:

Kemudian, gunakan Code Editor kesayangan kalian (Seperti VSCode) kemudian install extension Dart berikut:

Setelah itu, kita buat project dart pertama kita. Caranya dengan perintah cmd berikut:
dart create [nama-project]
Jika berhasil maka tampilannya akan seperti berikut:

Untuk menjalankan project, gunakan perintah:
dart run
Maka tampilannya akan seperti berikut:

Setelah itu, buka di code editor dengan cara klik kanan folder yang dibuat dan open via code editor.

Berikut adalah tampilan setelah di code editor:

Dari folder tersebut, berikut adalah penjelasan dari struktur-struktur foldernya

Selanjutnya adalah membuat List dalam bahasa pemrograman Dart. Untuk membuat list yaitu:
List<Tipe Data> variabel=[]
Atau:
List<Tipe Data> var variabel = <Tipe Data>[]
Untuk lebih memahami bagaimana list berkerja, gunakan kode berikut:
void main(List<String> arguments) {
// list
List<String> fruits = ['Apel', 'Alpukat', 'Nanas', 'Mangga', 'Pisang'];
print(fruits.toString());
//manupulasi list
fruits.add('Jeruk');
print(fruits.toString());
fruits.remove('Alpukat');
print(fruits.toString());
fruits[0] = 'Semangka';
print(fruits.toString());
fruits.sort();
print(fruits.toString());
fruits.shuffle();
print(fruits.toString());
print(fruits.length);
print(fruits.first);
print(fruits.last);
print(fruits.contains('Mangga'));
print(fruits.indexOf('Pisang'));
print(fruits.isEmpty);
print(fruits.isNotEmpty);
}
Hasilnya adalah sebagai berikut:

Selanjutnya adalah set. Set merupakan sebuah tipe data yang mirip dengan list, akan tetapi set tidak memiliki index sehingga data yang ada pada set tidak berurutan, Set tidak menerima duplikasi data Tidak bisa mengakses menggunakan index. Untuk membuat set yaitu:
Set<TipeData> namaVariabel={}
Atau:
var namaVariabel=<TipeData>{}
Untuk lebih memahami bagaimana cara set berkerja di bahasa pemrograman Dart, berikut adalah contoh kodenya:
//set
Set<String> animals = {'Kucing', 'Anjing', 'Kelinci', 'Burung'};
print(animals.toString());
//manipulasi set
animals.add('Ikan');
print(animals.toString());
animals.remove('Kelinci');
print(animals.toString());
print(animals.length);
print(animals.contains('Anjing'));
print(animals.isEmpty);
print(animals.isNotEmpty);
Hasil dari kode tersebut adalah sebagai berikut:

Selanjutnya adalah Map. Map adalah tipe data key-value yang mana key seperti index dan value sebagai datanya. Map menggunakan kurung kurawal {} dan menggunakan : untuk memisahkan key-value. Jika ada data key yang sama maka yang akan digunakan data key yang terakhir. Untuk membuat map yaitu:
Map<TipeDataKey, TipeDataValue> namaVariabel = {};
Atau:
var namaVariabel = Map<TipeDataKey,TipeDataValue>();
Atau:
var namaVariabel = <TipeDataKey,TipeDataValue>{};
Contoh penggunaannya adalah sebagai berikut:

Selanjutnya, kita akan masuk ke perulangan pada Dart. Ada dua cara perulangan dalam dart, yaitu:
for (var fruit in fruits) {
print(fruit);
}
for (var animal in animals) {
print(animal);
}
productPrices.forEach((key, value) {
print('$key: $value');
});
Atau:
for (var i = 0; i < fruits.length; i++) {
print(fruits[i]);
}
for (var i = 0; i < animals.length; i++) {
print(animals.elementAt(i));
}
for (var i = 0; i < productPrices.length; i++) {
print(
'${productPrices.keys.elementAt(i)}: ${productPrices.values.elementAt(i)}',
);
}
Hasil untuk perulangan cara pertama adalah sebagai berikut:

Hasil untuk perulangan cara kedua adalah sebagai berikut:

Selanjutnya, Object-Oriented Programming dalam bahasa pemrograman Dart. Buatkan kode berikut agar lebih memahami bagaimana OOP di Dart berkerja:
void main(List<String> arguments) {
//Object Oriented Programming (OOP)
//membuat object
var car1 = Car();
car1.color = 'Red';
car1.brand = 'Toyota';
car1.year = 2020;
car1.drive();
car1.honk();
print('Car 1: ${car1.color}, ${car1.brand}, ${car1.year}');
Cat cat1 = Cat();
cat1.eat();
cat1.meow();
}
class Car {
//property
String color = '';
String brand = '';
int year = 0;
//method
void drive() {
print('The $color $brand is driving.');
}
void honk() {
print('The $color $brand is honking.');
}
}
//pewarisan
class Animal {
void eat() {
print('The animal is eating.');
}
}
class Dog extends Animal {
void bark() {
print('The dog is barking.');
}
}
class Cat extends Animal {
void meow() {
print('The cat is meowing.');
}
}
Hasilnya akan seperti berikut:

Tugas
Deskripsi Tugas:
Buatlah aplikasi sederhana mini laundry menggunakan Bahasa pemgrograman Dart dengan ketentuan sebagai berikut :
- Paket Cuci dan Setrika 1 kg 6.000
- Paket Cuci 1 kg 4.000
- Paket Setrika 1 kg 3.000
- Jika total laundry >= 50.000 maka mendapatkan potongan harga 5%, dan jika lebih dari 100.000 mendapatkan potongan 10%
- Tampilkan output jumlah yang harus dibayar
Ubah program diatas menggunakan konsep OOP
Kode procedural:
import 'dart:io';
void main() {
print("Selamat Datang di CuciMager!");
print("Silahkan Pilih Paket yang anda mau.");
print("1. Cuci + Setrika (Rp 6000/kg)");
print("2. Cuci saja (Rp 4000/kg)");
print("3. Setrika saja (Rp 3000/kg)");
stdout.write("Masukkan pilihan paket: ");
int pilihan = int.parse(stdin.readLineSync()!);
stdout.write("Masukkan jumlah kg: ");
int kg = int.parse(stdin.readLineSync()!);
int hasil = 0;
switch (pilihan) {
case 1:
hasil = 6000 * kg;
break;
case 2:
hasil = 4000 * kg;
break;
case 3:
hasil = 3000 * kg;
break;
default:
print("Input salah!");
return;
}
double total = 0.0;
if (hasil >= 100000) {
double persen = hasil * 10 / 100;
total = hasil - persen;
} else if (hasil >= 50000) {
double persen = hasil * 5 / 100;
total = hasil - persen;
} else {
total = hasil.toDouble();
}
print("Total harga: Rp ${total.toInt()}");
}
Hasil:

Kode OOP:
import 'dart:io';
void main() {
var cucian = Laundry();
print("Selamat Datang di CuciMager!");
print("Silahkan Pilih Paket yang anda mau.");
print("1. Cuci + Setrika (Rp 6000/kg)");
print("2. Cuci saja (Rp 4000/kg)");
print("3. Setrika saja (Rp 3000/kg)");
stdout.write("Masukkan pilihan paket: ");
int pilihan = int.parse(stdin.readLineSync()!);
stdout.write("Masukkan jumlah kg: ");
cucian.kg = int.parse(stdin.readLineSync()!);
int totalHarga = cucian.pilih(pilihan);
if (totalHarga > 0) {
double hargaSetelahDiskon = cucian.diskon(totalHarga.toDouble());
print("Total: Rp ${hargaSetelahDiskon.toInt()}");
if (hargaSetelahDiskon < totalHarga) {
double persenDiskon = totalHarga >= 100000 ? 10 : 5;
print("Anda mendapat diskon ${persenDiskon}%!");
}
}
}
class Laundry {
int kg = 0;
int hasil = 0;
int pilih(int n) {
switch (n) {
case 1:
return hasil = 6000 * kg;
case 2:
return hasil = 4000 * kg;
case 3:
return hasil = 3000 * kg;
default:
print("Input salah!");
return 0;
}
}
double diskon(double n) {
double persen = 0;
if (n >= 100000) {
persen = n * 10 / 100;
return n - persen;
} else if (n >= 50000) {
persen = n * 5 / 100;
return n - persen;
} else {
return n;
}
}
}