Flutter: StatefulBuilder

How to use widget StatefulBuilder

Yudi Setiawan
Nusanet Developers
5 min readMay 21, 2022

--

Pengenalan

Pada tulisan kali ini kita akan membahas mengenai salah satu widget yang bernama StatefulBuilder . Dari namanya saja pasti kita sudah tahu apa fungsi dari widget tersebut. Jadi, StatefulBuilder berfungsi untuk membuat state tersendiri didalam builder. Fungsi dari widget ini menurut saya cukup bagus ya karena widget ini seperti membuat state tersendiri sehingga state-nya itu terpisah dari parent-nya dan kadang kalau widget-nya yang ingin kita buat itu cukup sederhana saya pikir lebih baik pakai StatefulBuilder aja sih. Ketimbang harus buat class sendiri yang extends ke StatefulWidget .

Contoh Projek

Jadi, untuk contoh projek kali ini kita akan menggunakan salah satu design yang ada di material design miliknya si Google.

https://material.io/components/dialogs

Bisa kita lihat bahwa pada design diatas sebenarnya sangat sederhana banget ya. Jadi, kalau teman-teman sudah paham di Flutter pasti sudah bisa membayangkan kalau untuk membuat design diatas kita pasti akan membuat sebuah widget Stateful tersendiri untuk dialog tersebut agar ketika di-setState (user pilih options-nya) maka, parent-nya tidak ikut ter-build juga. Jadi, di tulisan kali ini saya akan buat 2 versi. Versi pertamanya kita akan pakai class tersendiri khusus untuk dialog-nya dan versi keduanya kita akan pakai StatefulBuilder.

Mulai Pembuatan Projek

Untuk langkah pertamanya silakan buat projek baru dengan nama belajar_stateful_builder.

Buat Tampilan Utama

Buka file main.dart dan ubah kode didalamnya menjadi seperti berikut.

Berikut adalah output dari kode diatas.

Tampilan utama

Buat Versi Pertama

Untuk versi pertamanya kita akan membuat dialog-nya menggunakan class StatefulWidget. Untuk membuatnya silakan kita buka file main.dart dan tambahkan kode berikut.

Lalu, kita ubah kode todo berikut ini.

Menjadi seperti berikut.

Sekarang coba jalankan kembali aplikasinya. Dan seharusnya didalam aplikasinya kita sudah bisa pilih phone ringtone-nya.

Versi 1 menggunakan class StatefulWidget

Buat Versi Kedua

Nah, untuk versi keduanya kita akan membuat tampilan yang sama hanya saja kita menggunakan StatefulBuilder . Untuk membuatnya silakan kita buka kembali file main.dart dan tambahkan function berikut kedalam class _MyHomePageState.

Lalu, kita ubah kode berikut.

Menjadi seperti berikut.

Kemudian, biar kelihatan proses build state dari class _MyHomePageState kita perlu tambahkan kode debugging-nya didalam method build .

Sekarang coba kita jalankan lagi aplikasinya maka, outputnya akan tetap sama.

Versi 2 menggunakan StatefulBuilder

Nah, bisa kita lihat di video diatas dibagian log console-nya bahwa widget StatefulBuilder menggunakan state tersendiri sehingga ketika melakukan setState didalam StatefulBuilder maka, state dari parent-nya tidak akan ter-build ulang.

Kesimpulan

Jadi, kesimpulannya adalah widget StatefulBuilder bisa membantu kita untuk membuat widget stateful tanpa harus buat class yang terpisah. Tapi, perlu dicatat ya bahwa jika widget stateful yang kita pakai itu ingin reusable atau bisa dipakai secara berulang-ulang di halaman lain maka, saya lebih sarankan pakai yang buat class sendiri daripada pakai StatefulBuilder . Untuk source code lengkapnya bisa kamu lihat di Github ya.

--

--