Detail Dokumen: Laporan Praktikum 1
Kembali ke Portofolio
Logo Universitas Andalas

Laporan Praktikum Pemrograman Aplikasi Mobile MOdul 1

Pengenalan Widgets: Stateless, Stateful, & Manajemen State Dasar

Oleh:

AHMAD RAKA ALKINDI

NIM. 2411533017

Dosen Pengampu:

NURFIAH, S.ST, M.Kom.

Mata Kuliah:

PEMROGRAMAN APLIKASI MOBILE

Program Studi S1 Informatika
Fakultas Teknologi Informasi
Universitas Andalas
Padang

A. Pendahuluan

Praktikum ini berfokus pada pengenalan konsep dasar Widget pada framework Flutter, khususnya perbedaan antara StatelessWidget dan StatefulWidget serta bagaimana Flutter mengelola perubahan tampilan (UI) melalui manajemen state. Konsep dan komponen utama yang dipelajari pada praktikum ini meliputi:

a. MaterialApp & Scaffold

Kerangka dasar aplikasi Flutter yang menyediakan struktur halaman seperti AppBar, body, dan navigasi.

b. StatelessWidget

Widget statis yang tampilannya tidak pernah berubah setelah dirender, cocok untuk label teks, ikon, dan gambar statis.

c. StatefulWidget

Widget dinamis yang menyimpan data internal (State) dan dapat merender ulang UI sebagai respons terhadap interaksi pengguna.

d. Method setState()

Method yang digunakan untuk memberi tahu Flutter bahwa terjadi perubahan data, sehingga UI perlu dibangun ulang (rebuild).

B. Tujuan

Tujuan dari praktikum ini adalah agar mahasiswa mampu:

Alat yang digunakan: Flutter SDK, Code Editor (VS Code / Android Studio), Emulator / Device.

C. Isi & Langkah Kerja

Pengerjaan praktikum dibagi menjadi pembuatan widget sapaan statis, pembuatan kartu saldo interaktif, serta penggabungan keduanya ke dalam satu dashboard. Berikut adalah alur dan dokumentasi langkah kerjanya:

Widget Utama (main.dart & MyApp)

Titik masuk aplikasi dijalankan melalui void main() yang memanggil runApp(const MyApp()). Kelas MyApp merupakan StatelessWidget yang membungkus MaterialApp dan menentukan DashboardScreen sebagai halaman awal aplikasi.

Screenshot kode main.dart dan MyApp Gambar 1: Kode Program main.dart & MyApp
Halaman Utama (DashboardScreen / Scaffold)

DashboardScreen berupa StatelessWidget yang membangun struktur halaman menggunakan Scaffold, lengkap dengan AppBar dan body berisi Padding serta Column yang memanggil GreetingWidget() dan BalanceCardWidget().

Screenshot kode DashboardScreen Gambar 2: Kode Program DashboardScreen (Scaffold)
Widget Sapaan (GreetingWidget - Stateless)

Header statis berupa GreetingWidget yang menampilkan nama pengguna dan ikon avatar. Widget disusun menggunakan Row untuk menempatkan elemen kiri ke kanan, dan Column untuk menumpuk teks sapaan secara vertikal.

Screenshot kode GreetingWidget Gambar 3: Kode Program GreetingWidget
Kartu Saldo (BalanceCardWidget - Stateful)

BalanceCardWidget dibuat sebagai StatefulWidget agar dapat bereaksi saat ikon mata ditekan. Variabel _isBalanceVisible menyimpan status apakah saldo terlihat atau disensor, dan fungsi setState() dipanggil untuk membalik nilai boolean tersebut sehingga UI dirender ulang. Bagian ini juga sudah mencakup hasil Tugas 1 (warna Colors.teal) dan Tugas 2 (teks "No. Rekening: 1234-5678").

Screenshot kode BalanceCardWidget Gambar 4: Kode Program BalanceCardWidget

Latihan / Tugas

Tugas 1: Styling

Mengubah warna tema BalanceCard dari biru (Colors.blueAccent) menjadi hijau emerald (Colors.teal).

Screenshot tugas 1
Tugas 2: Modifikasi UI

Menambahkan teks statis berupa "No. Rekening: 1234-5678" di bagian bawah nominal saldo di dalam kartu.

Screenshot modifikasi UI

Implementasi kedua tugas di atas sudah dapat dilihat langsung pada kode program BalanceCardWidget (Gambar 4) di atas.

D. Kesimpulan

Kesimpulan dari praktikum ini adalah saya telah memahami perbedaan mendasar antara StatelessWidget dan StatefulWidget dalam framework Flutter. StatelessWidget cocok digunakan untuk tampilan statis seperti sapaan pengguna, sedangkan StatefulWidget diperlukan ketika tampilan harus berubah sebagai respons terhadap interaksi pengguna, seperti pada kartu saldo yang dapat disensor atau ditampilkan. Penggunaan method setState() menjadi kunci utama dalam memperbarui UI secara dinamis tanpa perlu membangun ulang seluruh aplikasi.

Kembali ke Halaman Utama Portofolio