Jelaskan apa yang dimaksud dengan stateless widget dan stateful widget dan jelaskan perbedaan dari keduanya.
Stateless widget adalah widget yang statenya tidak dapat berubah saat aplikasi sedang berjalan (statis). Dengan kata lain Stateless widget adalah widget yang Immutable / method build hanya dapat dipanggil sekali saat aplikasi berjalan. Stateful widget adalah widget yang statenya dapat berubah setelah build dilakukan (Mutable). State pada Stateful Widget dapat berubah dan diubah beberapa kali. Perbdaan kedua utama dari keduanya adalah Stateless Widget hanya bisa dibuild sekali sedangkan Stateful Widget dapat di build berkali-kali sepanjang aplikasi berjalan.
Scaffold
, untuk mengimplementasikan struktur layout dasar Material DesignAppBar
, untuk membuat appbarCenter
, untuk membuat child widgetnya menjadi di tengahColumn
, untuk menata children widgets nya dengan arah vertikalRow
, untuk menata children widgets nya dengan arah horizontalPadding
, untuk menambahkan padding pada child nyaVisibility
, untuk mengontrol child widgetnya dapat terlihat atau tidakFloatingActionButton
, untuk membuat button melayangIcon
, untuk membuat icon
setState()
adalah method yang digunakan untuk memanggil build method. Memanggil method setState()
menandakan bahwa pada state ini ada sesuatu yang berubah sehingga widget-widget akan dibuat ulang.
const
dan final
merupakan keyword pada bahasa Dart yang digunakan untuk membuat variabel statis. const
digunakan saat ingin membuat variabel yang konstan sejak compile time, sedangkan final
dapat digunakan saat ingin membuat variabel yang nilainya tidak dapat diubah dan nilai dari variabelnya bisa didapatkan saat running time.
- Membuat proyek flutter baru dengan memnjalankan
flutter create counter_7
. - Membuat Class bernama Counter yang merupakan stateful widgets.
- Membuat method incerement dan decrement untuk variabel counter.
- Membuat tampilan sesuai dengan contoh soal.
- Handle untuk angka ganjil dan genap dengan conditionals.
- Melakukan handling untuk button decrement.
Method push()
pada widget navigator akan menambahkan route(page/screen) baru ke dalam stack route yang diatur oleh Navigator. Method pushReplacment()
akan mengganti route lama (route yang berada pada top of the stack) dengan route baru.
Form
, sebagai container untuk mengelompokkan widget form field lainnyaExpanded
, untuk membuat child widgetnya mengisi ruang pada mainaxisTextFormField
, untuk membuat Form Field yang berisikan TextFieldListView.builder
, Membuat array widget linier yang scrollable. widget yang dibuat dapat sesuai permintaan.Card
, Widget untuk menampilkan kumpulan data pada suatu rounded corner dan elevasiSizedBox
, Membuat kotak dengan ukuran tetap.SingleChildScrollView
, untuk membuat kotak dimana widgetnya menjadi scrollable
- onPressed
- onTap
- onClick
- onChanged
- onHover
- onSaved
- onFocusChange
- onLongPress
Navigator bekerja berdasarkan prinsip Stack. Halaman yang sedang ditampilkan akan berada di top of stack. Sesuai dengan tipe data Stack, Navigator dapat melakukan operasi seperti push
dan pop
. Operasi push akan menambahkan route baru kedalam stack sehingga halaman baru akan ditampilkan. Operasi pop akan menghilangkan route yang berada pada top of stack sehingga halaman yang sedang ditampilkan berubah menjadi halaman sebelumnya.
- Membuat drawer serta routing pada widget drawer
- Membuat model untuk budget
- Membuat halaman Tambah Budget
- Membuah halaman yang menampilkan Data Budget
- Me-refactor widget Drawer ke file terpisah
Apakah bisa kita melakukan pengambilan data JSON tanpa membuat model terlebih dahulu? Jika iya, apakah hal tersebut lebih baik daripada membuat model sebelum melakukan pengambilan data JSON?
Bisaa. Kita dapat menyimpan data JSON pada sebuah Map
. Menurut saya jika tidak membuat model sebelum pengambilan data JSON kita akan sulit untuk mengatur data yang sudah diambil terutama data JSON yang kit ambil besar.
Expanded
, untuk membuat child widgetnya mengisi ruang pada mainaxisListView.builder
, Membuat array widget linier yang scrollable. widget yang dibuat dapat sesuai permintaan.ListTile
, Membuat satu baris dengan tinggi tetap yang biasanya berisi beberapa teks serta ikon awal atau akhir.Align
, Untuk mengatur posisi childnya
Pada tugas ini pengambilan data dilakukan dengan cara membuat function untuk mengirimkan HTTP Request (GET), kemuduai response akan dimanipulasi dan dimasukkan kedalam sebuah Object dan disimpan pada List of Object. Fungsi akan mengembalikan List tersebut. Untuk menampilkan data, kita dapat melakukan iterasi pada hasil list dari fungsi.
- Membuat file
mywatchlist.dart
- Menambahkan Routes mywatchlist ke drawer
- Membuat fungsi
fetchWatchList()
untuk mengambil data JSON - Menampilkan data hasil dari fungsi
fetchWatchList()
dimywatchlist.dart
- Me-refactor fungsi
fetchWatchList()
- Membuat halaman detail dari watchlist
- Menambahkan checkbox pada setiap watchlist dan menambahkan outline sesuai dengan status dari watchlist