Tujuan Pembelajaran
- Menangani error jaringan dan timeout.
- Membungkus risiko pada fungsi service.
- Menampilkan state loading, data, dan error.
- Menerapkan pola service layer yang rapi.
Uraian Materi
Aplikasi yang tangguh tidak hanya menangani alur bahagia (happy path). Koneksi dapat terputus, timeout, atau server mengembalikan error. Pertemuan ini melatih penanganan kegagalan agar aplikasi tetap memberi pengalaman baik kepada pengguna.
try-catch dan Exception
Permintaan jaringan dibungkus dalam try dan catch. Setiap exception menampilkan pesan yang dapat dipahami, misalnya ‘Tidak ada koneksi internet’ atau ‘Waktu permintaan habis’.
try {
final res = await http.get(uri).timeout(const Duration(seconds: 10));
if (res.statusCode == 200) {
final data = jsonDecode(res.body) as List;
print('Data diterima: ${data.length}');
} else {
throw Exception('Request gagal: ${res.statusCode}');
}
} catch (e) {
// tampilkan pesan error
}State Loading, Data, dan Error
Antarmuka umumnya berada dalam salah satu dari empat kondisi: memuat (loading), data tersedia, kosong, dan error. Keempatnya direpresentasikan dalam satu pandangan agar konsisten dan mudah dipelihara, bukan tersebar acak.
Service Layer yang Rapi
Semua fungsi API dipisahkan ke file service tersendiri (misal berita_service.dart) sehingga widget antarmuka tidak tercampur logika jaringan. Pemetaan model, parsing, dan error handling tinggal pada service; widget fokus pada tampilan. Arsitektur layering ini menjaga kode bersih pada aplikasi yang kian besar.
Praktik Terakhir Modul API
Peserta menggabungkan GET, POST, PUT, DELETE, loading, dan error ke satu aplikasi manajemen data berbasis API, menutup modul konsumsi REST API dan siap beranjak ke integrasi Firebase.
Membungkus Kegagalan dengan Amannya
Fungsi service mengembalikan hasil atau melempar kesalahan ke pemanggil, sehingga antarmuka cukup menangani satu titik kegagalan. Pemisahan tanggung jawab ini membuat service mudah diuji dan antarmuka tetap fokus pada tampilan.
Empat Kondisi Tampilan yang Konsisten
Peserta menetapkan satu pola untuk menampilkan keempat kondisi: memutar indikator saat loading, menampilkan daftar saat ada data, menampilkan pesan saat kosong, dan menampilkan pesan + tombol coba ulang saat error. Konsistensi ini membuat aplikasi terasa matang.
Timeout dan Pemutus Koneksi
Koneksi yang lambat perlu dibatasi waktu agar aplikasi tidak menggantung tanpa akhir. Timeout membatasi durasi maksimal permintaan, lalu menampilkan pesan ketika terlampaui. Peserta menyetel nilai yang wajar, misalnya beberapa detik, sesuai kebutuhan.
Menutup Modul API
Dengan pola service yang rapi dan penanganan error lengkap, peserta menyelesaikan modul konsumsi REST API. Kemampuan ini menjadi dasar untuk berpindah ke layanan backend yang dibutuhkan pada integrasi Firebase di pertemuan berikutnya.
Aktivitas Pembelajaran
- Menulis fungsi service dengan try-catch.
- Menampilkan keempat state antarmuka.
- Merapikan pemisahan service dan widget.
- Menguji simulasi koneksi bermasalah.
Tugas dan Latihan
- Perbaiki aplikasi manajemen data dengan penanganan error lengkap.
- Terapkan service layer terpisah untuk semua fungsi API.
- Tampilkan pesan kosong ketika data belum tersedia.
Evaluasi
Evaluasi dilakukan melalui pengamatan hasil praktikum, kuis singkat di akhir pertemuan, dan pemantauan proyek. Peserta yang belum mencapai indikator tertentu diberikan remedial melalui bimbingan ulang dan latihan tambahan pada pertemuan berikutnya.
Panduan umum praktik, catatan belajar, dan refleksi tersedia di Panduan Belajar Kribbi Study.

