Navigasi & Passing Data

Navigator, Konsep Stack, dan Constructor

Aplikasi Mobile
Pendahuluan

Aplikasi mobile membutuhkan tampilan dan navigasi yang baik agar pengguna dapat berpindah dari satu halaman ke halaman lainnya dengan mudah. Dalam pengembangan aplikasi menggunakan Flutter, navigasi antar halaman dapat dilakukan menggunakan Navigator.push untuk membuka halaman baru dan Navigator.pop untuk kembali ke halaman sebelumnya setelah suatu proses selesai. Selain itu, data antar halaman juga dapat dikirim melalui constructor sehingga informasi yang dipilih atau dimasukkan pada satu halaman dapat ditampilkan pada halaman lainnya.

Pada praktikum ini dibuat aplikasi sederhana berupa Expense Tracker yang memiliki beberapa halaman, yaitu dashboard, form pencatatan transaksi, dan detail transaksi. Penerapan navigasi digunakan untuk berpindah dari dashboard ke form transaksi, kembali ke dashboard setelah transaksi disimpan, serta membuka halaman detail dengan mengirimkan data transaksi melalui constructor. Pada form transaksi juga ditambahkan input tanggal dengan showDatePicker dan validasi agar tanggal wajib diisi. Melalui implementasi tersebut, praktikum ini memberikan pemahaman mengenai penggunaan navigasi dan pengiriman data antar halaman pada aplikasi Flutter.

Tujuan Praktikum

Praktikum ini bertujuan untuk:

  • Menerapkan Navigator.push untuk berpindah ke layer baru.
  • Menggunakan Navigator.pop untuk menutup layer setelah aksi selesai.
  • Mengirim data (String, int) antar layer melalui Constructor.
Langkah Praktikum
1. Membuat Halaman Detail Transaksi

Langkah pertama yang harus kita lakukan yaitu membuat halaman detail transaksi dan mendeklarasikan variabel final serta menampilkan data pada UI (Text) di detail_transaction_screen.dart.

Membuat halaman detail transaksi
Gambar 1: Kode untuk membuat halaman detail transaksi
2. Pindah ke Detail & Mengirim Data (Push)

Pada file Dashboard, pada widget ListTile daftar transaksi, tambahkan fungsi onTap. Dalam penambahan fungsi ini, gunakan Navigator.push dengan MaterialPageRoute, lalu isi data constructor (title & amount) sesuai data baris yang diklik.

Navigasi dengan push
Gambar 2: Implementasi Navigator.push dengan passing data
3. Menutup Layar / Kembali Otomatis (Pop)

Setelah itu, kembali ke file add_transaction_screen.dart lagi, lalu gunakan kode ini agar formular tertutup otomatis dan kembali ke Dashboard setelah klik Simpan.

Navigator pop
Gambar 3: Implementasi Navigator.pop untuk menutup halaman
4. Hasil Akhir: Mockup Halaman Detail

Dari output di atas dapat kita lihat demonstrasi dari program yang dikerjakan pada praktikum.

Hasil mockup halaman detail
Gambar 4: Tampilan halaman detail transaksi
Hasil mockup halaman detail 2
Gambar 5: Tampilan dashboard dengan daftar transaksi
Hasil mockup halaman detail 3
Gambar 6: Tampilan navigasi dari dashboard ke detail
Hasil mockup halaman detail 4
Gambar 7: Demonstrasi passing data antar halaman
Tugas
Membuat Input Tanggal Sebelum Tombol Simpan untuk Mengisi Tanggal Transaksi

Untuk melakukan hal ini, pertama-tama kita perlu menambahkan controller baru untuk tanggal agar bisa menampung tanggal yang dipilih dari showDatePicker. Bagian ini ditambahkan pada file add_transaction_screen.dart.

Menambahkan controller tanggal
Gambar 8: Menambahkan date controller

Selanjutnya, tepat di bawah controller yang ditambahkan tadi, tambahkan pula kode program ini untuk membuka kalender ketika tombol ditekan, serta memasukkan hasilnya ke _dateController.

Fungsi showDatePicker
Gambar 9: Implementasi showDatePicker

Selanjutnya, tambahkan kode program berikut pada bagian child dengan tujuan untuk membuat tampilan teks input dan validasi teks input tidak bisa dibiarkan kosong.

TextFormField untuk tanggal
Gambar 10: TextFormField dengan validasi tanggal
Hasil

Pada output di atas, dapat kita lihat jika input tanggal transaksi telah ditambahkan. Pada output juga diperlihatkan tampilan kalender yang muncul ketika tombol tambah pada input tanggal diklik.

Hasil input tanggal
Gambar 11: Tampilan input tanggal dan kalender
Hasil input tanggal 2
Gambar 12: Tampilan form transaksi dengan input tanggal terisi
Kesimpulan

Berdasarkan praktikum yang telah dilakukan, dapat disimpulkan bahwa navigasi pada Flutter dapat diterapkan dengan menggunakan Navigator.push untuk membuka halaman baru dan Navigator.pop untuk kembali ke halaman sebelumnya. Pengiriman data antar halaman dapat dilakukan melalui constructor dengan menggunakan parameter seperti String dan int, sehingga data transaksi dapat ditampilkan pada halaman detail sesuai data yang dikirim dari dashboard.

Selain itu, penambahan input tanggal menggunakan showDatePicker dan validasi membantu membuat form transaksi lebih terstruktur dan memastikan data yang diperlukan telah diisi sebelum transaksi disimpan. Praktikum ini memberikan pemahaman yang baik tentang konsep navigasi stack-based pada Flutter dan cara mengelola aliran data antar screen dalam aplikasi mobile.