Praktikum 3 membahas Input Widgets & Forms pada Flutter dengan fokus pada penangkapan data pengguna, penggunaan DropdownButtonFormField, dan validasi input. Form digunakan untuk menerima judul transaksi, nominal, dan kategori serta memastikan data yang dimasukkan sesuai sebelum diproses.
Gunakan StatefulWidget karena isi formulir dapat berubah ketika pengguna mengetik dan memilih kategori. Siapkan GlobalKey untuk validasi, controller untuk judul dan nominal, serta state untuk dropdown kategori.
Gambar 1. Menyiapkan StatefulWidget, GlobalKey, dan Controller
Bungkus seluruh kolom dengan widget Form dan hubungkan dengan _formKey. Buat TextFormField untuk Judul Transaksi dan Nominal. Pada nominal digunakan TextInputType.number serta validasi agar nilai tidak kosong dan harus berupa angka yang valid.
Gambar 2. Input Judul Transaksi dan Nominal beserta validasi
Tambahkan DropdownButtonFormField untuk memilih kategori Makanan, Transportasi, Hiburan, atau Lainnya. Selanjutnya tambahkan tombol Simpan Transaksi untuk menjalankan validasi keseluruhan. Jika valid, aplikasi menampilkan SnackBar.
Gambar 3. Dropdown kategori dan tombol Simpan Transaksi
Setelah tombol Simpan ditekan, jika semua input valid, aplikasi menampilkan SnackBar dengan pesan "Transaksi berhasil disimpan!".
Gambar 4. Output ketika transaksi berhasil disimpan
Tambahkan satu input baru sebelum tombol Simpan untuk mengisi Tanggal Transaksi. Sesuai modul, input dapat dibuat menggunakan TextFormField dengan format DD/MM/YYYY atau menggunakan fungsi showDatePicker.
Gambar 5. Penambahan input Tanggal Transaksi
Berikan validasi pada input tanggal agar wajib diisi. Jika tanggal tidak diisi ketika tombol Simpan ditekan, form menampilkan pesan kesalahan dan data tidak diproses.
Gambar 6. Validasi Tanggal Transaksi wajib diisi
Setelah tugas selesai, form transaksi memiliki input Judul Transaksi, Nominal, Kategori, dan Tanggal Transaksi. Form kemudian dapat divalidasi sebelum proses simpan dijalankan.
Gambar 7. Hasil akhir aplikasi setelah tugas praktikum
Hasil praktikum berupa halaman form transaksi pada Flutter yang dapat menerima Judul Transaksi, Nominal, dan Kategori. Form menggunakan controller untuk mengambil data, dropdown untuk memilih kategori, serta validasi untuk mencegah input kosong atau format nominal yang salah. Pada tugas, ditambahkan Tanggal Transaksi sebelum tombol Simpan dengan validasi wajib diisi.
Praktikum 3 memberikan pemahaman tentang pembuatan form input pada Flutter. TextFormField digunakan untuk menerima data teks dan nominal, DropdownButtonFormField digunakan untuk memilih kategori, sedangkan GlobalKey dan validator digunakan untuk memeriksa data sebelum disimpan. Penambahan Tanggal Transaksi pada tugas menunjukkan penerapan input tambahan beserta validasi wajib diisi pada sebuah form.
Source code Praktikum dapat dilihat melalui repository berikut.
Lihat Repository GitHub