Flutter: IndexedStack

How to use widget IndexedStack in Flutter

Yudi Setiawan
Nusanet Developers
6 min readJul 25, 2022

--

Pengenalan

Ketika kita ingin membuat sebuah tampilan antarmuka di Flutter pastinya kita sering menjumpai sebuah case yang mana, kita buat sebuah pengkondisian ketika kita ingin menampilkan sebuah widget. Contoh sederhananya misal, ketika si user pilih kategori A maka, akan tampil widget A. Dan jika si user pilih kategori B maka, akan tampil widget B. Nah, hal-hal seperti ini saya yakin kita semua pasti pernah mengalami case tersebut. Dan pada umumnya, untuk solusi tersebut biasanya kita buat pengkondisian secara manual menggunakan if else conditional. Di Flutter, kita sebagai developer benar-benar merasa terbantu dengan adanya kumpulan-kumpulan widget yang disediakan oleh Flutter. Jadi, di Flutter ada satu widget yang bernama IndexedStack. Widget ini berfungsi untuk membantu ketika kita ingin mengganti-ganti tampilan sebuah widget tanpa harus membuat if else conditional.

Contoh Projek

Untuk contohnya, kali ini kita akan membuat sebuah form sederhana saja yang mana didalamnya ada TextField pilih kategori, IndexedStack, dan Button. Kurang lebih kira-kira seperti inilah tampilan aplikasinya.

Contoh penggunaan IndexedStack

Buat Projek

Untuk langkah pertamanya, mari kita buat projek baru dengan nama flutter_indexed_stack.

Setup pubspec.yaml

Di projek ini kita membutuhkan sebuah plugin intl. Oleh karena itu, kita perlu menambahkan plugin tersebut kedalam projek. Untuk menambahkannya silakan jalankan perintah berikut.

Lalu, jalankan perintah flutter pub get .

Atur file main.dart

Langkah berikutnya ialah kita buka file main.dart dan ubah kode didalamnya menjadi seperti berikut.

Buat StatefulWidget WidgetDialogChoose

Masih didalam file main.dart kita buat StatefulWidget baru dengan nama WidgetDialogChoose. Lalu, kita isi kode didalamnya menjadi seperti berikut.

Jadi, widget yang kita buat tadi berfungsi untuk menampilkan dialog yang didalamnya ada sebuah radio button yang bisa dipilih oleh user.

Buat Class CurrencyIndonesiaInputFormatter

Masih didalam file main.dart silakan kita buat class baru dengan nama CurrencyIndonesiaInputFormatter dan isi kode didalamnya menjadi seperti berikut.

Class tersebut berfungsi untuk melakukan formatting angka rupiah ketika kita input angka didalam TextField.

Buat Widget TextField Category

Kemudian, kita akan membuat sebuah widget TextField untuk pilih kategori. Buka file main.dart dan ubah kode berikut.

Menjadi seperti berikut.

Sekarang coba kita jalankan programnya maka, outputnya akan menjadi seperti berikut.

Widget TextField pilih kategori

Buat Widget Input Peminjaman Dana

Langkah berikutnya kita akan membuat inputan peminjaman dana. Jadi, inputan ini akan muncul jika si user pilih kategorinya peminjaman dana. Ubah kode berikut.

Menjadi seperti berikut.

Sekarang coba kita jalankan kembali programnya. Maka, output-nya akan menjadi seperti berikut.

Widget TextField input peminjaman dana

Buat Widget Input Perjalanan Dinas

Langkah selanjutnya, kita akan membuat widget input perjalanan dinas jika si user pilih kategori perjalanan dinas. Silakan kita ubah kode berikut.

Menjadi seperti berikut.

Jika dijalankan programnya maka, outputnya akan menjadi seperti berikut.

Widget TextField input perjalanan dinas

Buat Widget Input Pengajuan Karyawan Baru

Selanjutnya, kita akan membuat input pengajuan karyawan baru jika si user pilih kategori pengajuan karyawan baru. Untuk membuatnya silakan ubah kode berikut.

Menjadi seperti berikut.

Dan berikut ialah outputnya.

Widget TextField input posisi pekerjaan

Buat Function unfocus

Silakan kita ubah kode berikut.

Menjadi seperti berikut.

Jadi, function tersebut berfungsi agar ketika si user pilih kategori yang didalam TextField maka, fokus-nya itu tidak mengarah ke TextField setelah selesai pilih kategori-nya.

Buat Widget Button Submit

Langkah terakhir kita akan membuat widget button submit. Silakan kita ubah kode berikut.

Menjadi seperti berikut.

Kesimpulan

Jadi, kurang lebih seperti itulah cara menggunakan widget IndexedStack di Flutter. Sangat gampangkan cara pakainya. Seperti biasa untuk source code lengkapnya bisa dicek di Github ya.

--

--