Harap selesaikan seluruh pertanyaan berikut. Dilarang keras berpindah tab atau membuka aplikasi lain. Sesi ujian ini diawasi secara ketat oleh sistem.
Pilihlah jawaban yang paling tepat untuk setiap pertanyaan. (Masing-masing bernilai 2 Poin)
setState(). Apa masalah utama dari pendekatan ini menurut kaidah Flutter?GestureDetector di dalam pengembangan aplikasi Flutter?TextFormField, properti apa yang harus kita berikan logika untuk mengecek apakah input teks tidak kosong atau valid (misalnya memiliki karakter @ untuk email)?FocusNode pada formulir (form) di Flutter?"Ya" tersebut?MaterialApp yang akan dipanggil ketika aplikasi memanggil sebuah rute bernama secara dinamis yang mungkin tidak didefinisikan secara statis di routes (memungkinkan kita mengekstrak argumen di dalamnya)?build() dari layar target tanpa menggunakan konstruktor kelas, Anda dapat mengeksekusi:null dan yang tidak, dengan tujuan menghindari error Null Reference Exception pada saat kompilasi disebut:MediaQuery.of(context) sering digunakan untuk...Tentukan apakah pernyataan berikut ini Benar atau Salah. (Masing-masing bernilai 2 Poin)
state-nya sendiri setelah render pertama kali disebut sebagai StatelessWidget.initState() pada siklus hidup (lifecycle) sebuah StatefulWidget dipanggil berkali-kali setiap kali widget dipicu untuk di-render ulang (misal saat setState dipanggil).Column.initialRoute: '/' pada widget MaterialApp, Anda disarankan agar tidak mendeklarasikan properti home: secara bersamaan karena dapat memicu konflik rute default.Form sebenarnya bersifat opsional, namun pembungkusan form field di dalamnya memudahkan pelacakan status input dan eksekusi validasi secara massal dengan menggunakan GlobalKey<FormState>.Navigator.pushNamed(context, '/settings') tidak akan menghapus layar saat ini dari memori, melainkan menambahkan layar Settings ke urutan paling atas dari tumpukan rute (Route Stack).ListView.builder digunakan khusus untuk me-render anak-anak (children) hanya pada bagian yang terlihat di layar, sehingga ini lebih efisien pada alokasi memori dibandingkan ListView standar untuk data list yang panjang tak terbatas.ThemeData pada level atas MaterialApp dapat digunakan untuk menetapkan desain tipografi global (fontFamily) dan skema warna primer/aksen agar seragam di semua layar.Lengkapi potongan kode berikut ini untuk menguji logika pemrograman Anda. (Masing-masing bernilai 5 Poin)
________().void _incrementCounter() {
________(() {
_counter++;
});
}
Navigator.________().ElevatedButton(
onPressed: () {
Navigator.________(context);
},
child: Text('Go back!'),
)
TextFormField, properti yang berfungsi menerima fungsi callback untuk mengecek apakah input pengguna sah (valid) atau mengalami error adalah ________.TextFormField(
________: (String? val) {
if (val == null || val.isEmpty) {
return 'Field tidak boleh kosong';
}
return null;
},
)
Icon atau Container), kita harus membungkusnya dengan widget pendeteksi gestur, yaitu ________.________(
onTap: () {
print('Widget diklik!');
},
child: Icon(Icons.lightbulb_outline),
)
Column, jika kita ingin menyusun seluruh children agar berada persis di tengah secara vertikal (sepanjang sumbu utama), kita harus mengatur properti ________ dengan nilai MainAxisAlignment.center.Column(
________: MainAxisAlignment.center,
children: [
Text('Satu'),
Text('Dua'),
],
)
Berikan jawaban yang terstruktur dan analitis. (Bernilai 25 Poin)
Anda bertugas merancang navigasi dan arsitektur form aplikasi jual beli sederhana menggunakan Flutter. Terdapat tiga layar utama yang dibutuhkan: 1. Layar Login (Menerima input email, password, dan sebuah tombol submit). 2. Layar Daftar Produk (Menampilkan katalog atau kisi gambar produk). 3. Layar Detail Produk (Menampilkan gambar produk dalam ukuran penuh, judul, dan deskripsi produk yang dipilih).
Berdasarkan prinsip Widget Tree, Flutter Forms, dan Routing (Navigator 1.0):
a) Penentuan Widget State (State Management)
Identifikasi tipe widget yang cocok (StatelessWidget atau StatefulWidget) untuk masing-masing layar di atas. Berikan penjelasan logis mengapa Anda memilih tipe widget tersebut untuk layar tersebut!
b) Perancangan Formulir Validasi (Forms & User Interaction)
Pada Layar Login, jelaskan strategi Anda merancang form input agar ketika pengguna menekan "Submit", aplikasi dapat memvalidasi email (wajib tidak kosong) dan password (minimal 6 karakter) secara serentak tanpa mengumpulkan status nilai manual dari properti onChanged satu persatu. Komponen kunci apa yang harus di-instansiasi?
c) Penanganan Rute (Navigation & Data Passing) Jelaskan proses navigasi yang Anda rekomendasikan untuk berpindah dari Layar Daftar Produk ke Layar Detail Produk ketika suatu gambar produk di-tap. Jelaskan dengan mekanisme parameter rute atau fungsi push bagaimana data identitas produk (misal: ID Produk / Objek Produk) dipindahtangankan agar dapat dirender oleh Layar Detail Produk!
Jawaban Anda telah berhasil dikirim dan tersimpan dengan aman di server.