Praktikum Aplikasi Mobile 1 – DART

Laporan Praktikum Pemrograman Dart untuk Aplikasi Mobile

Lihat Laporan

Dart

Sejarah Dart

Dart adalah bahasa pemrograman berorientasi objek (OOP) yang dibuat oleh Google dan pertama kali diperkenalkan tahun 2011 oleh Lars Bak dan Kasper. Bahasa ini memiliki sintaks mirip C, Java, dan JavaScript, sehingga mudah dipelajari oleh programmer yang sudah mengenal bahasa-bahasa tersebut. Dart mendukung berbagai paradigma pemrograman, seperti fungsional, imperatif, dan reflektif. Beberapa fiturnya antara lain berbasis kelas, garbage collection otomatis, mixins, generics, dan type inference.

Keunggulan Dart ada pada kinerjanya. Saat pengembangan, Dart bisa menggunakan kompilasi Just-in-Time (JIT) agar proses coding lebih cepat. Sementara untuk aplikasi jadi, Dart menggunakan Ahead-of-Time (AOT) agar performa lebih optimal. Sejak versi 2.12, Dart sudah mendukung sound null safety untuk mencegah error null pointer. Mulai Dart 3, semua kode wajib mematuhi null safety ini.

Daya tarik utama Dart adalah perannya sebagai bahasa utama Flutter, framework buatan Google untuk membuat aplikasi lintas platform (Android, iOS, web, dan desktop) hanya dengan satu basis kode. Selain itu, Dart juga bisa digunakan untuk aplikasi web (dikompilasi ke JavaScript atau WebAssembly), aplikasi server, dan desktop. Ekosistem Dart sangat mendukung pengembang lewat manajer paket pub.dev, pustaka-pustaka bawaan, serta tooling seperti DevTools dan plugin editor, sehingga pengalaman coding menjadi lebih lancar.

Instalasi Dart

Persyaratan Minimum Dart SDK

Sebelum menginstal SDK Dart, pastikan terlebih dahulu arsitektur perangkat keras yang digunakan sudah memenuhi syarat minimum. Adapun spesifikasi minimum yang dibutuhkan untuk instalasi SDK Dart dapat dilihat pada gambar berikut.

persyaratan-dart

Instalasi Dart SDK

Ada beberapa cara untuk menginstal SDK Dart. Pertama, menggunakan package manager seperti Chocolatey. Kedua, dengan mengunduh file SDK dalam format ZIP lalu mengekstraknya secara manual di perangkat. Pada panduan ini, kita akan menggunakan metode instalasi melalui Chocolatey.

Langkah pertama adalah pergi ke laman Chocolatey dan mengikuti instruksi untuk menginstal Chocolatey di sistem Anda.

Install-Chocolatey

masuk ke poweshell lalu run as administrator, lalu masukkan 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'))

Install di cmd

Ganti Path

Setelah Dart SDK terinstal, Anda perlu menambahkan path Dart ke variabel lingkungan sistem Anda. Ini memungkinkan Anda untuk menjalankan perintah Dart dari Command Prompt (CMD) di mana saja.

Untuk melakukannya, buka Control Panel dan cari "Environment Variables". Di bawah "System Properties", klik "Environment Variables".

Di bagian "System variables", cari variabel bernama "Path" dan pilih "Edit". Tambahkan path ke folder bin Dart SDK Anda (misalnya, `C:\ProgramData\chocolatey\lib\dart-sdk\tools\dart-sdk\bin`) ke dalam daftar.

ganti path

Setelah menambahkan path, tutup dan buka kembali Command Prompt (CMD) untuk menerapkan perubahan.

Setelah Chocolatey terinstal, buka Command Prompt (CMD) sebagai administrator dan jalankan perintah berikut untuk menginstal Dart SDK:

choco install dart-sdk

Setelah instalasi selesai, verifikasi instalasi dengan menjalankan perintah berikut di CMD:

dart
Install di cmd

Membuat Projek Dart di cmd

Buat projek dengan mengetik dart create (nama project) halo, untuk membuka proyek, ketik cd (nama project) halo, lalu untuk menjalankan proyek, ketik dart run.

Instalasi Ekstensi Dart di VSCode

Buka VSCode, lalu download ekstensi dart seperti dibawah.

ekstensi dart

Berikut tampilan awal dari struktur bahasa pemrograman Dart

tampilan awal dart

Berikut adalah tampilan awal dari projek dart yang sudah dibuat tadi.

List

List adalah tipe data yang berisi kumpulan data atau dalam bahasa pemrograman lain disebut array, Untuk membuat list yaitu, buat file baru dengan nama dart_dasar.dart pada file bin, inputkan kode seperti berikut.

void main(List arguments) {
  // list
  List fruits = ['Apel', 'Alpukat', 'Nanas', 'Mangga', 'Pisang'];
  print(fruits.toString());

  // manipulasi 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);
}

Maka outputnya akan seperti dibawah.

list

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 dan tidak bisa mengakses menggunakan index, tambahkan kode berikut pada bagian bawah kode tadi.

// set
Set 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);

Seperti di bawah ini.

Map

Map adalah tipe data key-value yang mana key seperti index dan value sebagai datanya, Menggunakan kurung kurawal {} dan menggunakan : untuk memisahkan key-value, Jika ada data key yang sama maka yang akan digunakan data key yang terakhir. berikut cara cara membuat map.

Ini adalah contoh kode untuk membuat map.

// map
Map productPrices = {
  'Laptop': '10.000.000',
  'Mouse': '200.000',
  'Keyboard': '500.000',
  'Monitor': '2.000.000'
};

print(productPrices.toString());

// manipulasi map
productPrices['Printer'] = '1.500.000';
print(productPrices.toString());

productPrices.remove('Mouse');
print(productPrices.toString());

productPrices['Laptop'] = '9.500.000';
print(productPrices.toString());

print(productPrices.length);
print(productPrices.containsKey('Keyboard'));
print(productPrices.containsValue('2.000.000'));
print(productPrices.keys);
print(productPrices.values);
print(productPrices.isEmpty);
print(productPrices.isNotEmpty);

Seperti di bawah ini.

Perulangan

Perulangan pada dart dapat dilakukan dengan 2 cara, cara pertama, gunakan kode dibawah ini.

for (var fruit in fruits) {
  print(fruit);
}

for (var animal in animals) {
  print(animal);
}

productPrices.forEach((key, value) {
  print('$key: $value');
});

Berikut hasil perulangan 1

Perulangan, cara kedua, gunakan kode dibawah ini.

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)}'
  );
}

Berikut hasil perulangan 2

OOP (Object-Oriented Programming)

Kode program berikut ini merupakan contoh konsep penerapan OOP pada Bahasa Dart. Buat file baru pada folder bin dengan nama oop.dart dan tambahkan kode program berikut.

void main(List arguments) {
  // Object Oriented Programming (OOP)

  // membuat object
  var car1 = Car();
  car1.color = 'Red';
  car1.brand = 'Toyota';
  car1.year = 2020;
  car1.drive();
  car1.honk();
  print('car1: ${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.');
  }
}

Berikut tampilan kodenya.

Berikut tampilan hasilnya.

Tugas

Aplikasi Laundry

1. Buatlah aplikasi sederhana mini laundry menggunakan Bahasa pemrograman 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

    import 'dart:io';
    
    void main() {
      //Dekralasi Awal Harga yang Ditawarkan
      const int paketCuciSetrika = 6000;
      const int paketCuci = 4000;
      const int paketSetrika = 3000;
    
      print("Selamat datang di Aplikasi Laundry Sederhana");
      print("Silahkan Masukkan nama anda: ");
      String? nama = stdin.readLineSync();
      print("Halo $nama, Silahkan pilih paket yang anda mau:");
      print("1. Paket Cuci + Setrika (Rp $paketCuciSetrika/kg)");
      print("2. Paket Cuci (Rp $paketCuci/kg)");
      print("3. Paket Setrika (Rp $paketSetrika/kg)");
    
      //Input Pilihan Paket
      stdout.write("Pilihan paket $nama adalah (1/2/3): ");
      int pilihan = int.parse(stdin.readLineSync()!);
    
      //Input Berat Cucian
      stdout.write("Berapa berat cucian $nama ? (kg): ");
      int berat = int.parse(stdin.readLineSync()!);
    
      //Proses perhitungan
      int hargaPerKg = 0;
      if (pilihan == 1) {
        hargaPerKg = paketCuciSetrika;
      } else if (pilihan == 2) {
        hargaPerKg = paketCuci;
      } else if (pilihan == 3) {
        hargaPerKg = paketSetrika;
      } else {
        print("Pilihan paket tidak valid");
        return;
      }
    
      //hitung total harga
      int totalHarga = hargaPerKg * berat;
    
      //Cek Harga Diskon
      double diskon = 0;
      if (totalHarga > 100000) {
        diskon = 0.1 * totalHarga;
        print(
          "Selamat $nama, Anda mendapatkan diskon 10% sebesar Rp ${diskon.toInt()}",
        );
      } else if (totalHarga > 50000) {
        diskon = 0.05 * totalHarga;
        print(
          "Selamat $nama, Anda mendapatkan diskon 5% sebesar Rp ${diskon.toInt()}",
        );
      }
    
      double hargaSetelahDiskon = totalHarga - diskon;
    
      //Struk Pembayaran
      print("====Struk Pembayaran Laundry====");
      print("Nama Pelanggan: $nama");
      print(
        "Paket yang dipilih: ${pilihan == 1
            ? "Cuci + Setrika"
            : pilihan == 2
            ? "Cuci"
            : "Setrika"}",
      );
      print("Berat Cucian: $berat kg");
      print("Total Harga: Rp ${totalHarga.toInt()}");
      print("Diskon: Rp ${diskon.toInt()}");
      print("Harga Setelah Diskon: Rp ${hargaSetelahDiskon.toInt()}");
    }

    Berikut tampilan hasilnya.

    2. Ubah program diatas menggunakan konsep OOP

    import 'dart:io';
    
    void main() {
      //Dekralasi Awal Harga yang Ditawarkan
      const int paketCuciSetrika = 6000;
      const int paketCuci = 4000;
      const int paketSetrika = 3000;
    
      print("Selamat datang di Aplikasi Laundry Sederhana");
      print("Silahkan Masukkan nama anda: ");
      String? nama = stdin.readLineSync();
      print("Halo $nama, Silahkan pilih paket yang anda mau:");
      print("1. Paket Cuci + Setrika (Rp $paketCuciSetrika/kg)");
      print("2. Paket Cuci (Rp $paketCuci/kg)");
      print("3. Paket Setrika (Rp $paketSetrika/kg)");
    
      //Input Pilihan Paket
      stdout.write("Pilihan paket $nama adalah (1/2/3): ");
      int pilihan = int.parse(stdin.readLineSync()!);
    
      //Input Berat Cucian
      stdout.write("Berapa berat cucian $nama ? (kg): ");
      int berat = int.parse(stdin.readLineSync()!);
    
      //Proses perhitungan
      int hargaPerKg = 0;
      if (pilihan == 1) {
        hargaPerKg = paketCuciSetrika;
      } else if (pilihan == 2) {
        hargaPerKg = paketCuci;
      } else if (pilihan == 3) {
        hargaPerKg = paketSetrika;
      } else {
        print("Pilihan paket tidak valid");
        return;
      }
    
      //hitung total harga
      int totalHarga = hargaPerKg * berat;
    
      //Cek Harga Diskon
      double diskon = 0;
      if (totalHarga > 100000) {
        diskon = 0.1 * totalHarga;
        print(
          "Selamat $nama, Anda mendapatkan diskon 10% sebesar Rp ${diskon.toInt()}",
        );
      } else if (totalHarga > 50000) {
        diskon = 0.05 * totalHarga;
        print(
          "Selamat $nama, Anda mendapatkan diskon 5% sebesar Rp ${diskon.toInt()}",
        );
      }
    
      double hargaSetelahDiskon = totalHarga - diskon;
    
      //Struk Pembayaran
      print("====Struk Pembayaran Laundry====");
      print("Nama Pelanggan: $nama");
      print(
        "Paket yang dipilih: ${pilihan == 1
            ? "Cuci + Setrika"
            : pilihan == 2
            ? "Cuci"
            : "Setrika"}",
      );
      print("Berat Cucian: $berat kg");
      print("Total Harga: Rp ${totalHarga.toInt()}");
      print("Diskon: Rp ${diskon.toInt()}");
      print("Harga Setelah Diskon: Rp ${hargaSetelahDiskon.toInt()}");
    }

    Berikut tampilan hasilnya.

    Link Project

    GitHub Repository