Proyek Akhir: Aplikasi Daftar Tugas
Merangkai semua yang dipelajari menjadi aplikasi daftar tugas lengkap: tambah, centang, hapus, dan hitungan sisa.
Saatnya merangkai
Kamu sudah mempelajari bahan-bahannya: class dan List (Dart), widget dan layout, ListView, tombol, state, serta TextField. Di bab ini semuanya digabung menjadi aplikasi sungguhan: Daftar Tugas.
Fitur
| Fitur | Dibuat dengan |
|---|---|
| Mengetik tugas baru dan menambahkannya | TextField + TextEditingController + setState |
| Menampilkan daftar | ListView.builder + ListTile |
| Mencentang tugas selesai | Checkbox + setState |
| Menghapus tugas | IconButton + removeAt |
| Jumlah tugas yang tersisa di judul | getter yang dihitung dari list |
Rancangan data
class Tugas {
final String judul;
bool selesai;
Tugas(this.judul, {this.selesai = false});
}
selesai tidak final karena akan berubah saat dicentang. Daftar tugas disimpan di state: final List<Tugas> _daftar = [];.
Langkah berpikir
- Tambah: baca teks dari controller, abaikan bila kosong, tambahkan ke list di dalam
setState, lalu kosongkan controller. - Centang:
Checkboxmemberi nilai baru lewatonChanged; simpan dit.selesaidalamsetState. Nilainya bertipebool?sehingga dipakaiv ?? false("bila null, anggap false"). - Hapus:
_daftar.removeAt(index)dalamsetState. - Sisa:
_daftar.where((t) => !t.selesai).length. Ini nilai turunan: dihitung saat tampilan dibangun, tidak perlu disimpan terpisah.
Setelah ini
- Menyimpan permanen: paket
shared_preferences(data sederhana) atausqflite/drift(database). - Navigasi lanjut: paket
go_router. - State management lanjut:
Provider,Riverpod, atauBloc. - Merilis aplikasi:
flutter build apk --release(Android) atauflutter build appbundleuntuk Google Play. Ganti nama dan ikon aplikasi lewatpubspec.yamldan folderandroid/. - Terus berlatih dengan membuat aplikasi kecil buatanmu sendiri: catatan harian, kalkulator, atau pencatat pengeluaran.