Praktikum 2

Laporan Praktikum 2: Aplikasi Mobile

Regi Heksa Ananda

Repository GitHub

A. Modul Pengenalan Widget

a. Langkah Praktikum

1

Menginisialisasi Aplikasi

Menginisialisasi aplikasi menggunakan fungsi main() dan kelas MyApp (berbasis StatelessWidget). Bagian ini membungkus keseluruhan aplikasi dengan MaterialApp, menyembunyikan banner debug, mengatur tema, dan menetapkan DashboardScreen sebagai halaman utama (home).

Menginisialisasi Aplikasi
2

Membuat DashboardScreen

DashboardScreen (StatelessWidget) menggunakan Scaffold untuk membangun kerangka dasar halaman. Komponen ini memiliki AppBar dengan judul praktikum dan properti body berupa Column (dibungkus Padding) yang berfungsi menampung GreetingWidget dan BalanceCardWidget secara vertikal dengan jarak antar elemen (SizedBox).

Membuat DashboardScreen
3

Membuat GreetingWidget

GreetingWidget (StatelessWidget) bertugas menyusun layout sapaan secara horizontal menggunakan Row. Terdiri dari elemen ikon profil (CircleAvatar) dan sekumpulan teks sapaan bertumpuk vertikal (Column) yang menyapa pengguna dengan teks 'Halo, Budi!'.

Membuat GreetingWidget
4

Inisialisasi Logika State pada BalanceCardWidgetState

Inisialisasi logika state pada BalanceCardWidgetState. Variabel boolean _isBalanceVisible dikelola di sini. Terdapat fungsi _toggleVisibility() yang dipanggil melalui setState() untuk membalikkan nilai boolean, sehingga memicu UI untuk melakukan render ulang saat ikon mata ditekan.

Inisialisasi Logika State
5

Logika Ternary Operator

Logika ternary operator diterapkan untuk menentukan tampilan ikon (mata terbuka/tertutup) sekaligus menyensor teks nominal saldo (berubah menjadi 'Rp **********' atau angka aslinya) sesuai dengan status _isBalanceVisible.

Logika Ternary Operator
6

Output

Output saat saldo diperlihatkan
Output saat saldo diperlihatkan.
Output saat saldo di-hide
Output saat saldo di-hide.

b. Latihan

1

Styling atau Modifikasi Visual

Melakukan styling atau modifikasi visual pada widget Card saldo. Warna background kartu diubah menjadi hijau kebiruan (Colors.teal) melalui properti color, sekaligus mengatur elevasi bayangan serta tingkat lengkungan pada sudut kartu (borderRadius).

Styling Visual
2

Penambahan Data Teks Statis

Penambahan data teks statis berupa informasi rekening. Menggunakan widget Text untuk menampilkan 'No. Rekening: 1234-5678' dengan pengaturan ukuran font 16 dan warna putih, ditempatkan tepat di bawah nominal saldo dengan jarak pemisah SizedBox.

Data Teks Statis
3

Output

Output saat saldo diperlihatkan
Output saat saldo diperlihatkan.
Output saat saldo di-hide
Output saat saldo di-hide.

B. Modul Layouting dan Styling

a. Langkah Praktikum

1

Pengaturan Awal (Root Aplikasi)

Pengaturan awal (Root Aplikasi) pada kelas MyApp yang strukturnya sama dengan modul sebelumnya. Berfungsi untuk mendaftarkan dan memuat DashboardScreen sebagai root antarmuka pengguna.

Pengaturan Awal
2

Pembaruan pada DashboardScreen

Pembaruan pada DashboardScreen di mana elemen body kini dibungkus dengan widget SingleChildScrollView. Modifikasi ini sangat krusial untuk membuat layar bisa digulir (scrollable) ke bawah, sehingga mencegah error overflow ketika daftar transaksi bertambah panjang. Kolom ini juga ditambahkan dengan ActionButtonsWidget dan RecentTransactionsWidget.

Pembaruan pada DashboardScreen
3

GreetingWidget

GreetingWidget yang dipertahankan dari modul pertama, mengatur posisi avatar biru dan dua baris teks sapaan pengguna.

GreetingWidget
4

Logika State Management

Logika state management untuk kartu saldo, tetap mengandalkan boolean _isBalanceVisible dan fungsi pembaruan state setState() agar kartu dapat merespons interaksi.

Logika State Management
5

Kode Pembentuk UI untuk BalanceCardWidget

Kode pembentuk UI untuk BalanceCardWidget, yang mengkombinasikan Row dan Column untuk merapikan teks 'Saldo Utama', tombol toggle mata, dan teks saldo nominal yang reaktif terhadap perubahan state.

UI untuk BalanceCardWidget
6

Pembentukan ActionButtonsWidget

Pembentukan ActionButtonsWidget menggunakan widget Row dengan mainAxisAlignment: MainAxisAlignment.spaceEvenly. Tujuannya adalah mendistribusikan tombol Pemasukan, Pengeluaran, dan Transfer secara horizontal dengan jarak yang rata. Pendekatan ini dilengkapi dengan fungsi pembantu (helper) _buildActionButton untuk menghindari repetisi kode (DRY) dalam merender desain tombol yang konsisten.

Pembentukan ActionButtonsWidget
7

RecentTransactionsWidget

RecentTransactionsWidget menyusun bagian riwayat transaksi menggunakan Column. Tiap item transaksi menggunakan widget ListTile yang secara efisien merapikan posisi elemen kiri (leading icon), teks utama (title), teks tanggal (subtitle), dan teks nominal paling kanan (trailing). Digunakan Divider untuk memberikan garis pemisah antar transaksi.

RecentTransactionsWidget
8

Output

Output saat saldo diperlihatkan
Output saat saldo diperlihatkan.
Output saat saldo di-hide
Output saat saldo di-hide.

b. Latihan

1

Modifikasi Desain dan Penambahan Item Transaksi

Modifikasi desain dan penambahan item transaksi ke-4 ('Bayar Listrik') menggunakan ListTile. Diterapkan styling khusus pada teks nominal (trailing) dengan memberikan warna merah (Colors.red) dan font tebal (bold) untuk merepresentasikan bahwa transaksi tersebut merupakan sebuah pengeluaran.

Penambahan data transaksi fiktif ke-5 ('Bonus Kinerja'). Pada bagian trailing, font diatur dengan warna hijau (Colors.green) dan ketebalan bold, digunakan untuk memvisualisasikan bahwa transaksi tersebut bernilai positif atau merupakan sebuah pemasukan.

Penambahan Item Transaksi
2

Output

Output saat saldo diperlihatkan
Output saat saldo diperlihatkan.
Output saat saldo di-hide
Output saat saldo di-hide.