{"id":160,"date":"2025-10-02T01:27:04","date_gmt":"2025-10-02T01:27:04","guid":{"rendered":"https:\/\/nia.infokand23.my.id\/blog\/?p=160"},"modified":"2025-10-02T01:34:28","modified_gmt":"2025-10-02T01:34:28","slug":"pratikum-3","status":"publish","type":"post","link":"https:\/\/nia.infokand23.my.id\/blog\/pratikum-3\/","title":{"rendered":"Pratikum 3"},"content":{"rendered":"\n<p>Aplikasi Mobile<\/p>\n\n\n\n<p>Berikut adalah contoh <strong>pendahuluan laporan praktikum<\/strong> untuk aplikasi <strong>Kalkulator Kabataku<\/strong> (Kali, Bagi, Tambah, Kurang) yang kamu buat menggunakan Flutter:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pendahuluan<\/strong><\/h2>\n\n\n\n<p>Dalam pengembangan aplikasi mobile, kemampuan menerima input dari pengguna dan memberikan respon yang sesuai merupakan elemen penting untuk menciptakan interaksi yang efektif. Flutter, sebagai framework UI modern dari Google, menyediakan berbagai widget yang memungkinkan pembuatan antarmuka pengguna yang responsif dan intuitif.<\/p>\n\n\n\n<p>Pada praktikum ini, mahasiswa diminta untuk membuat sebuah aplikasi kalkulator sederhana yang mampu melakukan operasi dasar matematika yaitu <strong>penjumlahan (tambah), pengurangan (kurang), perkalian (kali), dan pembagian (bagi)<\/strong> \u2014 atau dikenal dengan istilah <strong>Kabataku<\/strong>. Proyek ini bertujuan untuk melatih kemampuan mahasiswa dalam menggunakan widget seperti <code>TextField<\/code>, <code>TextFormField<\/code>, <code>ElevatedButton<\/code>, dan <code>Text<\/code>, serta memahami cara menangani input, melakukan validasi, dan menampilkan hasil perhitungan secara dinamis menggunakan <code>setState()<\/code>.<\/p>\n\n\n\n<p>Pembuatan aplikasi kalkulator ini juga melibatkan pemahaman dasar mengenai struktur kode Flutter, penggunaan controller pada form input, serta pengelolaan state pada aplikasi berbasis widget. Melalui praktikum ini, diharapkan mahasiswa dapat lebih memahami konsep dasar pembuatan form, interaksi user, dan logika sederhana dalam pengembangan aplikasi mobile menggunakan Flutter.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">TUJUAN:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Membuat beberapa input widgets<\/li>\n\n\n\n<li>Membuat dan mengontrol inputan dari user<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>TEORI<\/strong><\/h2>\n\n\n\n<p>Dalam pengembangan antarmuka pengguna pada aplikasi Flutter, salah satu bagian penting yang sering digunakan adalah <strong>Basic Form<\/strong>. Basic Form merupakan sekumpulan widget yang digunakan untuk menerima input dari pengguna. Widget-widget ini meliputi <code>TextField<\/code>, <code>TextFormField<\/code>, <code>Checkbox<\/code>, <code>Switch<\/code>, <code>Dropdown<\/code>, <code>Radio<\/code>, <code>Dialog<\/code>, <code>DatePicker<\/code>, <code>BottomSheet<\/code>, <code>Snackbar<\/code>, dan lain sebagainya. Form tidak hanya menampilkan elemen input, tetapi juga menyediakan mekanisme untuk <strong>validasi dan pengelolaan data input<\/strong>. Ketika pengguna mengisi form, data yang dimasukkan akan divalidasi berdasarkan aturan yang telah ditentukan, dan hasil input tersebut dapat diambil dan diproses lebih lanjut setelah validasi berhasil.<\/p>\n\n\n\n<p>Salah satu widget dasar yang paling sering digunakan untuk menerima input teks adalah <code>TextField<\/code>. Widget ini menyediakan kotak input di mana pengguna dapat mengetikkan teks, dan sering digunakan dalam berbagai kebutuhan seperti formulir login, pencarian, atau masukan komentar. <code>TextField<\/code> memiliki berbagai properti untuk mengatur gaya teks (<code>style<\/code>), dekorasi (<code>decoration<\/code>), serta jenis inputan seperti angka, email, atau teks biasa. Untuk mengelola isi dari <code>TextField<\/code>, Flutter menyediakan objek <code>TextEditingController<\/code> yang dapat digunakan untuk mengambil nilai teks, membersihkannya, atau mengatur isinya secara manual.<\/p>\n\n\n\n<p>Selain <code>TextField<\/code>, Flutter juga menyediakan <code>TextFormField<\/code>, yang merupakan versi lebih lengkap dan canggih. <code>TextFormField<\/code> sudah terintegrasi dengan sistem form Flutter, yang memungkinkan pengguna untuk secara langsung menerapkan <strong>validasi input<\/strong> melalui properti <code>validator<\/code>. Dengan <code>validator<\/code>, kita bisa menentukan aturan validasi seperti memastikan input tidak kosong, memenuhi panjang minimal, atau sesuai format tertentu. Jika validasi gagal, maka <code>TextFormField<\/code> akan secara otomatis menampilkan pesan kesalahan. <code>TextFormField<\/code> juga dapat berinteraksi dengan objek <code>FormState<\/code>, yang mengelola status keseluruhan dari Form. Hal ini sangat berguna dalam aplikasi yang memiliki lebih dari satu input field dan membutuhkan validasi secara menyeluruh.<\/p>\n\n\n\n<p>Untuk menghubungkan widget <code>Form<\/code> dengan objek <code>FormState<\/code>, Flutter menggunakan <strong>GlobalKey<\/strong>. <code>GlobalKey<\/code> adalah objek unik yang digunakan untuk mengakses dan mengontrol status suatu widget secara global dari luar widget itu sendiri. Dengan <code>GlobalKey<\/code>, kita bisa memanggil method seperti <code>validate()<\/code> atau <code>save()<\/code> dari tombol aksi seperti <code>ElevatedButton<\/code>. Hal ini memungkinkan interaksi antara input form dan kontrol UI eksternal dalam aplikasi.<\/p>\n\n\n\n<p>Objek <code>FormState<\/code> sendiri merupakan kelas yang berfungsi untuk menyimpan dan mengatur status dari Form, termasuk status validasi dan data yang diinputkan. Saat kita menggunakan GlobalKey untuk mengakses FormState, kita bisa menjalankan fungsi <code>validate()<\/code> yang akan memeriksa semua inputan di dalam Form sekaligus. Jika semua validasi berhasil, maka fungsi ini akan mengembalikan nilai <code>true<\/code>, dan kita bisa melanjutkan ke proses penyimpanan atau perhitungan data.<\/p>\n\n\n\n<p>Selain validasi dan input data, Flutter juga menggunakan method <code>setState()<\/code> untuk memperbarui tampilan aplikasi ketika terjadi perubahan data. Method ini digunakan untuk memberitahu framework bahwa ada perubahan pada state aplikasi, sehingga Flutter akan melakukan <strong>rebuild<\/strong> pada widget terkait dan memperbarui tampilannya secara otomatis di layar. <code>setState()<\/code> sangat penting dalam aplikasi interaktif seperti kalkulator, di mana hasil perhitungan perlu ditampilkan kembali setelah tombol ditekan.<\/p>\n\n\n\n<p>Terakhir, penggunaan kata kunci <code>const<\/code> dalam Flutter digunakan untuk mendeklarasikan widget yang nilainya tidak akan berubah saat aplikasi dijalankan. Widget yang dideklarasikan sebagai <code>const<\/code> hanya akan dibangun satu kali pada waktu kompilasi (compile-time), sehingga dapat meningkatkan performa aplikasi karena Flutter tidak perlu membangun ulang widget tersebut jika tidak diperlukan. Ini merupakan salah satu praktik yang disarankan untuk mengoptimalkan kinerja aplikasi Flutter.<\/p>\n\n\n\n<p>Secara keseluruhan, pemahaman terhadap konsep-konsep seperti <code>TextField<\/code>, <code>TextFormField<\/code>, <code>Form<\/code>, <code>FormState<\/code>, <code>GlobalKey<\/code>, <code>validate()<\/code>, <code>setState()<\/code>, dan <code>const<\/code> sangat penting dalam membangun aplikasi mobile berbasis Flutter, terutama yang melibatkan input dan interaksi pengguna secara langsung.<\/p>\n\n\n\n<p><strong>LANGKAH PENGERJAAN:<\/strong><\/p>\n\n\n\n<p><strong>Langkah 1: Membuat File Baru dengan Nama <code>form_textfield.dart<\/code><\/strong><\/p>\n\n\n\n<p>Dalam file ini, kita akan menampilkan sebuah form sederhana menggunakan widget <code>TextField<\/code> sebagai tempat untuk memasukkan data. Selain itu, kita juga menambahkan sebuah tombol <code>ElevatedButton<\/code> yang berfungsi sebagai pemicu aksi saat ditekan.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"402\" height=\"426\" src=\"https:\/\/nia.infokand23.my.id\/blog\/wp-content\/uploads\/2025\/10\/image.png\" alt=\"\" class=\"wp-image-163\" style=\"width:274px;height:auto\" srcset=\"https:\/\/nia.infokand23.my.id\/blog\/wp-content\/uploads\/2025\/10\/image.png 402w, https:\/\/nia.infokand23.my.id\/blog\/wp-content\/uploads\/2025\/10\/image-283x300.png 283w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/figure>\n\n\n\n<p><strong>Langkah 2: Membuat File dengan Nama <code>form_textformfield.dart<\/code><\/strong><\/p>\n\n\n\n<p>Di dalam file ini, kita akan membuat beberapa variabel penting seperti <code>GlobalKey<\/code> untuk mengelola state form, <code>TextEditingController<\/code> untuk mengontrol input dari <code>TextFormField<\/code>, serta fungsi yang berguna untuk mengosongkan isi input nama dan email. Selain itu, kita juga akan menyiapkan fungsi yang akan dijalankan saat tombol ditekan.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"556\" height=\"390\" src=\"https:\/\/nia.infokand23.my.id\/blog\/wp-content\/uploads\/2025\/10\/image-1.png\" alt=\"\" class=\"wp-image-164\" style=\"width:379px;height:auto\" srcset=\"https:\/\/nia.infokand23.my.id\/blog\/wp-content\/uploads\/2025\/10\/image-1.png 556w, https:\/\/nia.infokand23.my.id\/blog\/wp-content\/uploads\/2025\/10\/image-1-300x210.png 300w\" sizes=\"auto, (max-width: 556px) 100vw, 556px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>KESIMPULAN<\/strong><\/h2>\n\n\n\n<p>Dari pembahasan mengenai Basic Form dan komponen-komponen pendukungnya pada Flutter, dapat disimpulkan bahwa penggunaan widget seperti <code>TextField<\/code> dan <code>TextFormField<\/code> sangat penting untuk menerima dan mengelola input dari pengguna secara efektif. <code>TextFormField<\/code> menawarkan kelebihan dalam hal validasi otomatis yang terintegrasi dengan sistem form, sehingga memudahkan pengelolaan data dan pengecekan kesalahan input.<\/p>\n\n\n\n<p>Selain itu, peran <code>GlobalKey<\/code> dan <code>FormState<\/code> sangat krusial dalam mengontrol dan memvalidasi seluruh form secara keseluruhan, sehingga aplikasi dapat memastikan data yang dimasukkan sudah sesuai dengan aturan sebelum diproses lebih lanjut. Penggunaan method <code>validate()<\/code> pada <code>FormState<\/code> memudahkan pelaksanaan validasi secara kolektif.<\/p>\n\n\n\n<p>Penggunaan method <code>setState()<\/code> membantu dalam memperbarui tampilan aplikasi secara dinamis ketika terjadi perubahan data, sedangkan kata kunci <code>const<\/code> berguna untuk meningkatkan performa aplikasi dengan mendeklarasikan widget yang bersifat konstan.<\/p>\n\n\n\n<p>Secara keseluruhan, pemahaman dan penerapan konsep-konsep ini sangat membantu dalam membangun aplikasi Flutter yang responsif, interaktif, dan dapat menangani input pengguna dengan baik serta menjaga kualitas data yang diterima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aplikasi Mobile Berikut adalah contoh pendahuluan laporan praktikum untuk aplikasi Kalkulator Kabataku (Kali, Bagi, Tambah, Kurang) yang kamu buat menggunakan Flutter: Pendahuluan Dalam pengembangan aplikasi mobile, kemampuan menerima input dari pengguna dan memberikan respon yang sesuai merupakan elemen penting untuk menciptakan interaksi yang efektif. Flutter, sebagai framework UI modern dari Google, menyediakan berbagai widget yang [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/comments?post=160"}],"version-history":[{"count":3,"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/posts\/160\/revisions"}],"predecessor-version":[{"id":167,"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/posts\/160\/revisions\/167"}],"wp:attachment":[{"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/media?parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/categories?post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nia.infokand23.my.id\/blog\/wp-json\/wp\/v2\/tags?post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}