Form Transaksi Lanjutan & Validasi Data
Deklarasi dua alat kontrol teks (`TextEditingController`) untuk menangkap input data judul dan nominal transaksi secara real-time[cite: 6].
Mendefinisikan variabel string kategori terpilih serta membuat *list* yang memuat opsi dropdown kategori seperti makanan, transportasi, hiburan, dan lainnya[cite: 6].
Memanggil metode `dispose()` guna membersihkan sisa data dari controller sesaat setelah halaman ditutup agar memori perangkat tidak terbebani (*memory leak*)[cite: 6].
Membangun kerangka dasar Scaffold yang dihiasi AppBar berwarna `deepPurple` elegan dengan judul halaman "catat transaksi baru"[cite: 6].
Implementasi area bergulir (`SingleChildScrollView`) yang dipadukan dengan widget Form dan disusun sejajar merata ke samping menggunakan `CrossAxisAlignment.stretch`[cite: 6].
Pembuatan kolom input untuk judul transaksi lengkap dengan garis batas tepi (border) dan fungsi validasi agar pengguna tidak mengirimkan teks kosong[cite: 6].
Kolom pengisian uang yang secara otomatis menampilkan papan ketik angka (`TextInputType.number`) dengan validasi keamanan ganda untuk memastikan format yang dimasukkan adalah bilangan bulat[cite: 6].
Penerapan `DropdownButtonFormField` untuk memudahkan pemilihan kategori dari opsi yang telah disiapkan sebelumnya, dan menyimpan nilainya setiap kali ada perubahan[cite: 6].
Sistem akan memverifikasi keseluruhan kondisi form ketika tombol ini ditekan. Jika validasi terpenuhi, aplikasi akan menampilkan pop-up sukses hijau (Snackbar)[cite: 6].
Menyiapkan satu lagi controller khusus yang dialokasikan untuk mendeteksi dan menangkap input jadwal transaksi pengguna[cite: 6].
Kolom input canggih yang dilengkapi ikon tambah (add) pada ujungnya untuk memicu jendela kalender pop-up, dipadukan juga dengan proteksi wajib isi[cite: 6].
Potret kondisi awal formulir yang rapi saat aplikasi baru dibuka oleh pengguna, di mana belum ada kolom yang diintervensi[cite: 6].
Tangkapan layar yang memperlihatkan respon cepat sistem menolak penyimpanan data jika masih terdapat baris merah karena ada yang belum terisi[cite: 6].
Tampilan akhir ketika seluruh syarat input sudah terpenuhi. Sebuah notifikasi Snackbar muncul membawa kabar bahwa transaksi baru berhasil dicatat secara resmi[cite: 6].