50 SOAL DAN JAWABAN PEMROGRAMAN MOBILE - MATERI WIDGET DART FLUTTER

50 SOAL DAN JAWABAN PEMROGRAMAN MOBILE - MATERI WIDGET DART FLUTTER



NOMOR 1 (PG – 20 poin)

SOAL:
Widget apa yang berfungsi sebagai akar aplikasi dan menyediakan fitur seperti MaterialApp dan ThemeData?

Pilihan Jawaban:
A. TodoListScreen
B. MyApp
C. Scaffold
D. StatelessWidget
E. Container

Kunci Jawaban: B


NOMOR 2 (PG – 20 poin)

SOAL:
Kelas MyApp adalah turunan dari StatelessWidget. Apa implikasi utamanya terhadap widget ini?

Pilihan Jawaban:
A. Widget tersebut dapat mengubah data internal (_todos) setelah dibuat.
B. Widget tersebut tidak memiliki state yang dapat berubah selama runtime.
C. Widget tersebut memerlukan TextEditingController.
D. Widget tersebut harus menggunakan _listKey.
E. Widget harus menggunakan build().

Kunci Jawaban: B


NOMOR 3 (PG – 20 poin)

SOAL:
Kelas TodoListScreen adalah turunan dari StatefulWidget. Mengapa ini diperlukan dalam aplikasi Todo List?

Pilihan Jawaban:
A. Karena ia memerlukan controller.
B. Untuk mengaktifkan animasi.
C. Untuk mengelola data daftar tugas (_todos) yang dapat berubah.
D. Untuk menampilkan gradient di background.
E. Untuk menggunakan StatelessWidget.

Kunci Jawaban: C


NOMOR 4 (PG – 20 poin)

SOAL:
Variabel _todos dideklarasikan sebagai List<Map<String, dynamic>>. Dalam konteks state management lokal, di mana variabel ini harus dideklarasikan?

Pilihan Jawaban:
A. Di dalam MyApp.
B. Di dalam fungsi main().
C. Di dalam TodoListScreen.
D. Di dalam _TodoListScreenState.
E. Di dalam Scaffold.

Kunci Jawaban: D


NOMOR 5 (PG – 20 poin)

SOAL:
Fungsi apa yang dipanggil untuk memberitahu Flutter bahwa state telah berubah (misalnya, setelah menambah atau menghapus tugas), yang kemudian memicu pembangunan ulang widget?

Pilihan Jawaban:
A. _listKey.currentState!.insertItem()
B. runApp()
C. setState()
D. _buildTodoItem()
E. dispose()

Kunci Jawaban: C


NOMOR 6 (PG – 20 poin)

SOAL:
Widget utama yang menyediakan struktur visual dasar (seperti body, AppBar, dan FloatingActionButton) untuk layar aplikasi adalah...

Pilihan Jawaban:
A. Container
B. Scaffold
C. Column
D. MaterialApp
E. ListView

Kunci Jawaban: B


NOMOR 7 (PG – 20 poin)

SOAL:
Widget apa yang digunakan untuk mengatur AppBar, input area, dan daftar tugas secara vertikal?

Pilihan Jawaban:
A. Row
B. Stack
C. Column
D. Expanded
E. Wrap

Kunci Jawaban: C


NOMOR 8 (PG – 20 poin)

SOAL:
Widget apa yang memungkinkan TextField untuk mengambil ruang selebar mungkin di dalam Row (bersama dengan FloatingActionButton mini)?

Pilihan Jawaban:
A. Padding
B. Expanded
C. SizedBox
D. Container
E. Align

Kunci Jawaban: B


NOMOR 9 (PG – 20 poin)

SOAL:
Properti floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat berfungsi untuk...

Pilihan Jawaban:
A. Menempatkan FAB di kanan bawah.
B. Menempatkan FAB di tengah atas layar.
C. Menempatkan FAB di tengah bawah layar.
D. Membuat FAB bersembunyi saat scroll.
E. Mengubah warna FAB.

Kunci Jawaban: C


NOMOR 10 (PG – 20 poin)

SOAL:
Widget apa yang digunakan untuk menambahkan ruang atau jarak antar widget (misalnya, antara TextField dan FloatingActionButton mini)?

Pilihan Jawaban:
A. Container
B. Padding
C. SizedBox
D. Expanded
E. Spacer

Kunci Jawaban: C


NOMOR 11 (PG – 20 poin)

SOAL:
Widget apa yang digunakan untuk menampilkan input field bagi pengguna untuk mengetik tugas baru?

Pilihan Jawaban:
A. Text
B. ListTile
C. TextField
D. TextEditingController
E. Card

Kunci Jawaban: C


NOMOR 12 (PG – 20 poin)

SOAL:
Widget mana yang digunakan untuk mengontrol teks pada TextField dan menghapusnya (_controller.clear()) setelah tugas ditambahkan?

Pilihan Jawaban:
A. GlobalKey
B. TextEditingController
C. SnackBar
D. FloatingActionButton
E. GlobalKey

Kunci Jawaban: B


NOMOR 13 (PG – 20 poin)

SOAL:
Properti onSubmitted: (value) => _addTodo() pada TextField akan memicu fungsi _addTodo() ketika...

Pilihan Jawaban:
A. Pengguna menekan tombol "Tambah".
B. Pengguna mengklik di luar field.
C. Pengguna menekan tombol "Enter/Done" pada keyboard.
D. Aplikasi dimuat.
E. Saat controller di-dispose.

Kunci Jawaban: C


NOMOR 14 (PG – 20 poin)

SOAL:
Widget yang digunakan untuk memberikan umpan balik sementara kepada pengguna setelah menghapus tugas adalah...

Pilihan Jawaban:
A. Dialog
B. Alert
C. SnackBar
D. Card
E. BottomSheet

Kunci Jawaban: C


NOMOR 15 (PG – 20 poin)

SOAL:
Widget khusus apa yang digunakan untuk membangun daftar tugas dan memungkinkan animasi saat item ditambahkan atau dihapus?

Pilihan Jawaban:
A. ListView
B. Column
C. AnimatedList
D. ListTile
E. Stack

Kunci Jawaban: C


NOMOR 16 (PG – 20 poin)

SOAL:
Properti key: _listKey pada AnimatedList berfungsi untuk...

Pilihan Jawaban:
A. Memberikan identifikasi unik pada setiap item daftar.
B. Menghubungkan state daftar ke GlobalKey agar dapat memanggil insertItem dan removeItem.
C. Menetapkan initial count dari daftar.
D. Mengontrol animasi SizeTransition.
E. Untuk menyimpan data daftar tugas.

Kunci Jawaban: B


NOMOR 17 (PG – 20 poin)

SOAL:
Widget apa yang digunakan untuk membungkus setiap item tugas agar memiliki tampilan yang rapi dengan bayangan (elevation)?

Pilihan Jawaban:
A. Padding
B. Container
C. Card
D. SizeTransition
E. FittedBox

Kunci Jawaban: C


NOMOR 18 (PG – 20 poin)

SOAL:
Dalam fungsi _buildTodoItem, widget apa yang menyediakan struktur tata letak item daftar yang umum (judul, leading icon, trailing widget), dan mendukung interaksi onTap?

Pilihan Jawaban:
A. Text
B. ListTile
C. Row
D. Card
E. CustomScrollView

Kunci Jawaban: B


NOMOR 19 (PG – 20 poin)

SOAL:
Pada ListTile, penggunaan onTap: () => _toggleTodo(index) berfungsi untuk...

Pilihan Jawaban:
A. Menghapus tugas saat diklik.
B. Mengubah status selesai/belum selesai dari tugas.
C. Mengedit teks tugas.
D. Menampilkan detail tugas.
E. Menyalin tugas.

Kunci Jawaban: B


NOMOR 20 (PG – 20 poin)

SOAL:
Efek visual apa yang dihasilkan oleh properti TextDecoration.lineThrough?

Pilihan Jawaban:
A. Teks menjadi tebal.
B. Teks dicoret dengan garis.
C. Teks berubah warna.
D. Teks menjadi miring.
E. Teks menjadi garis bawah.

Kunci Jawaban: B


NOMOR 21 (PG – 20 poin)

SOAL:
Properti apa yang digunakan pada Container di body Scaffold untuk memberikan efek visual transisi warna dari atas ke bawah?

Pilihan Jawaban:
A. color
B. BoxDecoration dengan RadialGradient
C. BoxDecoration dengan LinearGradient
D. decoration: BoxDecoration()
E. RadialGradient

Kunci Jawaban: C


NOMOR 22 (PG – 20 poin)

SOAL:
Di ThemeData, properti apa yang mengatur default font untuk seluruh aplikasi (misalnya menjadi 'Roboto')?

Pilihan Jawaban:
A. primarySwatch
B. fontFamily
C. textTheme
D. textStyle
E. primaryColor

Kunci Jawaban: B


NOMOR 23 (PG – 20 poin)

SOAL:
Kode elevation: 4 pada Card berfungsi untuk...

Pilihan Jawaban:
A. Menambahkan padding di sekitar kartu.
B. Membuat sudut kartu menjadi bulat.
C. Mengatur ketinggian kartu, memberikan efek bayangan (shadow) di bawahnya.
D. Mengatur warna background kartu.
E. Mengubah bentuk kartu.

Kunci Jawaban: C


NOMOR 24 (PG – 20 poin)

SOAL:
Warna teks tugas yang sudah selesai (todo['completed'] ? Colors.grey[600] : Colors.black87) menunjukkan bahwa...

Pilihan Jawaban:
A. Teks selalu berwarna biru.
B. Teks berwarna biru jika selesai, dan abu-abu jika belum.
C. Teks berwarna abu-abu jika selesai, dan hitam jika belum.
D. Teks selalu berwarna hitam.
E. Teks selalu berwarna putih.

Kunci Jawaban: C


NOMOR 25 (PG – 20 poin)

SOAL:
Properti pada AppBar yang disetel ke 0 (elevation: 0) berfungsi untuk...

Pilihan Jawaban:
A. Menghilangkan judul.
B. Menghilangkan bayangan di bawah app bar.
C. Membuat app bar transparan.
D. Menghilangkan tombol menu.
E. Menghilangkan margin di atas app bar.

Kunci Jawaban: B


NOMOR 26 (PG – 20 poin)

SOAL:
Dalam fungsi _addTodo(), baris kode mana yang secara spesifik memicu animasi fade-in (masuk) untuk item yang baru ditambahkan?

Pilihan Jawaban:
A. setState(() { _todos.add(newTodo); });
B. _controller.clear();
C. _listKey.currentState!.insertItem(_todos.length - 1);
D. _buildTodoItem(...)
E. _controller.clear();

Kunci Jawaban: C


NOMOR 27 (PG – 20 poin)

SOAL:
Dalam fungsi _deleteTodo(), item yang dihapus diteruskan kembali ke removeItem menggunakan (context, animation) => _buildTodoItem(...). Apa tujuan utama dari ini?

Pilihan Jawaban:
A. Untuk memperbarui GlobalKey.
B. Untuk memastikan item yang dihapus masih dapat di-build selama animasi keluar.
C. Untuk mencegah error saat snack bar ditampilkan.
D. Untuk menampilkan ulang item setelah dihapus.
E. Untuk mengubah index item.

Kunci Jawaban: B


NOMOR 28 (PG – 20 poin)

SOAL:
Widget apa yang digunakan di _buildTodoItem untuk menerapkan animasi perubahan ukuran saat item ditambahkan atau dihapus?

Pilihan Jawaban:
A. SlideTransition
B. Opacity
C. SizeTransition
D. Scale

Pilihan Jawaban:
A. SlideTransition
B. Opacity
C. SizeTransition
D. ScaleTransition
E. FadeTransition

Kunci Jawaban: C


NOMOR 29 (PG – 20 poin)

SOAL:
Bagian mana dari kode yang menampilkan empty state (pesan 'Belum ada tugas!') ketika daftar _todos kosong?

Pilihan Jawaban:
A. Di dalam Scaffold.
B. Bagian _todos.isEmpty ? Center(...) : AnimatedList(...).
C. Hanya jika initialItemCount adalah 0.
D. Di dalam _buildTodoItem.
E. Di dalam _deleteTodo.

Kunci Jawaban: B


NOMOR 30 (PG – 20 poin)

SOAL:
Dalam metode dispose(), mengapa _controller.dispose() dipanggil?

Pilihan Jawaban:
A. Untuk menghapus semua teks di TextField.
B. Untuk memicu animasi.
C. Untuk membebaskan sumber daya yang digunakan oleh TextEditingController saat widget dihapus dari widget tree.
D. Untuk menyimpan state sebelum keluar.
E. Untuk mencegah error pada setState().

Kunci Jawaban: C


NOMOR 31 (PG – 20 poin)

SOAL:
Properti hintText: 'Masukkan tugas baru...' pada TextField berfungsi untuk...

Pilihan Jawaban:
A. Mengatur nilai awal teks.
B. Menampilkan teks panduan saat field kosong.
C. Mengatur label di atas field.
D. Memberi style pada placeholder.
E. Mengubah warna kursor.

Kunci Jawaban: B


NOMOR 32 (PG – 20 poin)

SOAL:
Pada InputDecoration untuk TextField, properti apa yang membuat input field terisi dengan warna background?

Pilihan Jawaban:
A. prefixIcon
B. border
C. filled: true
D. fillColor: Colors.white
E. border: none

Kunci Jawaban: C


NOMOR 33 (PG – 20 poin)

SOAL:
Kode Icon(Icons.delete, color: Colors.red) digunakan sebagai trailing widget di dalam ListTile untuk...

Pilihan Jawaban:
A. Tombol checkbox.
B. Tombol edit.
C. Tombol hapus.
D. Ikon status selesai.
E. Tombol share.

Kunci Jawaban: C


NOMOR 34 (PG – 20 poin)

SOAL:
Tujuan dari tooltip: 'Tambah Tugas' pada FloatingActionButton adalah...

Pilihan Jawaban:
A. Mengubah warna tombol saat ditekan.
B. Menampilkan label teks saat tombol ditekan lama.
C. Menampilkan label di samping tombol.
D. Mengatur warna FloatingActionButton.
E. Mengatur ukuran tombol.

Kunci Jawaban: B


NOMOR 35 (PG – 20 poin)

SOAL:
Pada Icon(Icons.task_alt, ...) di leading ListTile, ikon ini secara visual merepresentasikan...

Pilihan Jawaban:
A. Tombol menu.
B. Indikator tugas/status.
C. Tombol tambah.
D. Tombol hapus.
E. Ikon edit.

Kunci Jawaban: B


NOMOR 36 (PG – 20 poin)

SOAL:
Mengapa properti initialItemCount: _todos.length diperlukan untuk AnimatedList?

Pilihan Jawaban:
A. Agar _listKey dapat bekerja.
B. Agar AnimatedList tahu berapa banyak item yang harus di-build pada saat pertama kali dimuat.
C. Untuk mencegah error jika daftar kosong.
D. Untuk mengaktifkan SizeTransition.
E. Untuk menghubungkan dengan initState().

Kunci Jawaban: B


NOMOR 37 (PG – 20 poin)

SOAL:
Jika Anda ingin mengubah warna tema utama (semua widget yang menggunakan primarySwatch), properti apa yang perlu diubah di ThemeData?

Pilihan Jawaban:
A. fontFamily
B. primarySwatch
C. textStyle
D. color
E. accentColor

Kunci Jawaban: B


NOMOR 38 (PG – 20 poin)

SOAL:
Apa yang akan terjadi jika baris _listKey.currentState!.insertItem(_todos.length - 1); dihilangkan dari fungsi _addTodo()?

Pilihan Jawaban:
A. Tugas tidak akan ditambahkan.
B. Aplikasi akan crash.
C. Tugas akan ditambahkan, tetapi tanpa animasi masuk.
D. Tugas akan ditambahkan, tetapi tidak dapat dihapus.
E. Tugas akan ditambahkan, tetapi AnimatedList akan crash.

Kunci Jawaban: C


NOMOR 39 (PG – 20 poin)

SOAL:
Kode apa yang digunakan untuk mendapatkan context saat menampilkan SnackBar?

Pilihan Jawaban:
A. ScaffoldMessenger.of(context)
B. BuildContext context
C. _listKey.currentState
D. TodoListScreen()
E. Text(_todos.length.toString())

Kunci Jawaban: A


NOMOR 40 (PG – 20 poin)

SOAL:
Jika Anda ingin mengganti Card dengan widget yang full-width tanpa bayangan, widget apa yang paling tepat untuk menggantikannya, sambil tetap mempertahankan margin?

Pilihan Jawaban:
A. Container dengan properti color
B. Padding
C. Divider
D. SizedBox
E. InkWell

Kunci Jawaban: A


NOMOR 41 (PG – 20 poin)

SOAL:
Variabel _todos dideklarasikan sebagai List<Map<String, dynamic>>. Apa tujuan utama menggunakan Map<String, dynamic> untuk setiap item tugas?

Pilihan Jawaban:
A. Memungkinkan penyimpanan hanya nilai int dan double.
B. Untuk mendefinisikan tipe data yang sangat ketat dan tidak fleksibel.
C. Memungkinkan penyimpanan pasangan kunci-nilai (misalnya, 'text' dan 'completed') dalam satu objek.
D. Untuk menyimpan data secara persisten di disk.
E. Untuk memicu animasi.

Kunci Jawaban: C


NOMOR 42 (PG – 20 poin)

SOAL:
Metode mana yang dipanggil hanya sekali ketika objek State (_TodoListScreenState) pertama kali dibuat, dan sering digunakan untuk inisialisasi controller seperti TextEditingController?

Pilihan Jawaban:
A. dispose()
B. setState()
C. build()
D. initState()
E. runApp()

Kunci Jawaban: D


NOMOR 43 (PG – 20 poin)

SOAL:
Dalam sebuah Column, jika anak-anak widget (children) tidak dibungkus dengan Expanded atau Flexible, bagaimana Column menentukan ukuran vertikalnya?

Pilihan Jawaban:
A. Mengambil seluruh ruang vertikal yang tersedia (seperti Expanded).
B. Mengambil ukuran dari widget anak yang terbesar.
C. Mengambil ukuran yang sama dengan widget anak yang terkecil.
D. Mengambil ruang vertikal sekecil mungkin (minimized), sesuai dengan total kebutuhan anak-anaknya.
E. Menggunakan MainAxisAlignment.spaceEvenly secara default.

Kunci Jawaban: D


NOMOR 44 (PG – 20 poin)

SOAL:
Selain primarySwatch, properti ThemeData apa yang sering digunakan untuk mengatur warna latar belakang default (background color) pada sebagian besar widget, seperti Scaffold?

Pilihan Jawaban:
A. cardColor
B. canvasColor
C. backgroundColor
D. scaffoldBackgroundColor
E. primaryColor

Kunci Jawaban: D


NOMOR 45 (PG – 20 poin)

SOAL:
Dalam Dart, kata kunci (keyword) apa yang digunakan untuk mendeklarasikan variabel (seperti _todos atau _listKey) yang harus diinisialisasi hanya sekali dan nilainya tidak akan pernah berubah (immutable)?

Pilihan Jawaban:
A. var
B. final
C. const
D. static
E. volatile

Kunci Jawaban: B


NOMOR 46 (PG – 20 poin)

SOAL:
Jika aplikasi Todo List diubah untuk menyimpan data tugas ke database lokal atau cloud (operasi yang memerlukan waktu), jenis fungsi apa yang perlu digunakan pada _addTodo()?

Pilihan Jawaban:
A. Fungsi sync
B. Fungsi Generator
C. Fungsi async yang mengembalikan Future
D. Fungsi Callback
E. Fungsi lambda

Kunci Jawaban: C


NOMOR 47 (PG – 20 poin)

SOAL:
Widget apa yang digunakan untuk membungkus item daftar (misalnya Card) agar pengguna dapat menghapusnya dengan menggesek ke kiri atau kanan (swipe-to-dismiss)?

Pilihan Jawaban:
A. GestureDetector
B. Draggable
C. Dismissible
D. AbsorbPointer
E. Listener

Kunci Jawaban: C


NOMOR 48 (PG – 20 poin)

SOAL:
Dalam konteks Flutter, apa fungsi utama dari objek BuildContext yang dilewatkan ke metode build()?

Pilihan Jawaban:
A. Untuk menyimpan state widget secara lokal.
B. Untuk menyediakan akses ke data tema (ThemeData).
C. Untuk melacak lokasi widget dalam widget tree dan memungkinkannya mengakses widget ancestor.
D. Untuk mengelola animasi transisi.
E. Untuk menangani operasi input pengguna.

Kunci Jawaban: C


NOMOR 49 (PG – 20 poin)

SOAL:
Apa keuntungan utama dari memisahkan logika pembangunan item tugas (_buildTodoItem) menjadi metode terpisah atau bahkan widget baru?

Pilihan Jawaban:
A. Mencegah penggunaan setState().
B. Memastikan item tugas selalu berada di tengah layar.
C. Meningkatkan keterbacaan (readability) kode dan mempermudah pemeliharaan (maintainability).
D. Memaksa penggunaan GlobalKey.
E. Mengubah item tugas menjadi StatefulWidget.

Kunci Jawaban: C


NOMOR 50 (PG – 20 poin)

SOAL:
Dalam Dart, notasi => (panah gemuk/fat arrow) pada onTap: () => _toggleTodo(index) berfungsi sebagai singkatan untuk...

Pilihan Jawaban:
A. Menandakan fungsi adalah asinkron.
B. Mengubah tipe data yang dikembalikan.
C. Mengembalikan ekspresi tunggal sebagai hasil dari fungsi.
D. Mendeklarasikan sebuah kelas baru.
E. Mendefinisikan parameter fungsi.

Kunci Jawaban: C


✅ SELAMAT BELAJAR

Share:

Tidak ada komentar:

Posting Komentar

Blogger Tricks

Blogger Themes