State Management Lanjutan: Provider

Tujuan Pembelajaran

  • Menjelaskan keterbatasan setState pada aplikasi besar.
  • Memahami konsep provider untuk state global.
  • Menggunakan ChangeNotifier dan ChangeNotifierProvider.
  • Menerapkan context.watch dan context.read.

Uraian Materi

Ketika banyak widget harus berbagi data yang sama, meneruskan data secara manual menjadi rumit (prop drilling). Solusinya adalah state management global. Provider adalah solusi resmi yang direkomendasikan – ringan dan mudah dipahami.

Pertama tambahkan dependensi pada pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  provider: ^6.1.2

ChangeNotifier

Kelas model yang menampung state membuatnya bersifat reaktif dengan mewarisi ChangeNotifier. Setiap perubahan memanggil notifyListeners agar widget yang mendengarkan diperbarui. Contoh model penghitung:

class Penghitung extends ChangeNotifier {
  int nilai = 0;
  void tambah() { nilai++; notifyListeners(); }
  void kurang() { nilai--; notifyListeners(); }
}

Menyediakan State dengan Provider

Di bagian atas pohon, bungkus aplikasi dengan ChangeNotifierProvider:

ChangeNotifierProvider(
  create: (_) => Penghitung(),
  child: const MyApp(),
)

Membaca dan Memodifikasi State

Dalam widget, context.watch<Penghitung>() dipakai ketika tampilan perlu ikut berubah setiap ada notifikasi, sedangkan context.read untuk aksi yang tidak membangun ulang tampilan. Pembeda ini penting untuk performa: watch pada build, read pada pada tap.

final p = context.watch();
Text('${p.nilai}')

context.read().tambah();

Latihan Pemindahan Data

Praktik menggunakan provider untuk menyimpan data pengguna yang dipakai lintas halaman, menunjukkan cara berpindah dari setState lokal ke state global yang dibagikan banyak widget.

Perbandingan dengan Pola Lain

Selain Provider, terdapat pola lain seperti setState lokal, InheritedWidget, Riverpod, dan Bloc. Provider dipilih karena ringan dan mudah dipelajari sebagai langkah awal. Pemahaman dasar Provider membekali peserta berpindah ke solusi state management lain dengan konsep yang serupa.

MultiProvider untuk Beberapa State

Ketika aplikasi membutuhkan lebih dari satu state global, MultiProvider membungkus beberapa provider sekaligus. Contoh umum: state autentikasi terpisah dari state keranjang. Peserta berlatih menyusun MultiProvider dan mengakses masing-masing state dari widget yang berbeda.

Watch vs Read untuk Kinerja

context.watch membangun ulang widget setiap ada perubahan, sedangkan context.read hanya membaca nilai tanpa menyebabkan rebuild. Menggunakan watch hanya saat benar-benar memerlukan pembaruan membuat aplikasi lebih efisien dan mengurangi pekerjaan tanpa manfaat.

Praktik Keranjang Belanja

Proyek mini pada pertemuan ini adalah keranjang belanja: menambah item, menghapus, dan menampilkan jumlah total yang diperbarui otomatis di berbagai halaman. Proyek ini menguatkan pola state global yang nantinya dipakai pada aplikasi proyek akhir.

Aktivitas Pembelajaran

  • Mendiskusikan kelemahan setState pada state besar.
  • Menambahkan paket provider pada proyek.
  • Menulis model ChangeNotifier.
  • Mengimplementasikan provider pada aplikasi multi-halaman.

Tugas dan Latihan

  • Ganti state counter setState menjadi Provider.
  • Buat state keranjang belanja (tambah/hapus) berbasis Provider.
  • Tampilkan jumlah item keranjang pada app bar lintas halaman.

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 Belajar Mandiri

Untuk menguatkan pemahaman, peserta disarankan membaca ulang kode yang telah dibuat, mencoba memodifikasi nilai dan properti, lalu mengamati perubahannya melalui hot reload. Eksperimen kecil-kecil semacam ini membangun intuisi yang tidak diperoleh hanya dari teori.

Kesulitan yang ditemui selama praktik dicatat pada jurnal belajar dan dibawa ke pertemuan berikutnya. Konsistensi belajar mandiri di antara sesi mempercepat penguasaan materi dan membuat praktikum di kelas berjalan lebih efektif.

Ringkasan Pertemuan

Pada pertemuan ke-12 fokus pembelajaran adalah state management lanjutan: provider. Seluruh indikator tujuan difokuskan pada penguasaan materi tersebut secara praktis, sehingga peserta tidak hanya mengenal konsep tetapi mampu menerapkannya langsung dalam proyek Flutter yang sedang dikembangkan. Ringkasan nilai utama: menjelaskan keterbatasan setstate pada aplikasi besar..

Kemampuan peserta diukur melalui penyelesaian latihan yang mencerminkan penerapan nyata, bukan sekadar hafalan. Setiap konsep baru selalu dikaitkan dengan materi sebelumnya agar terbentuk pemahaman yang utuh dan berkesinambungan sepanjang kurikulum.

Refleksi Diri

Bagian berikut mengajak peserta menelaah kembali sejauh mana materi telah dikuasai. Kejujuran dalam menilai diri menentukan efektivitas langkah perbaikan selanjutnya.

  • Apakah saya dapat menjelaskan kembali pokok materi pertemuan ini tanpa melihat catatan?
  • Apakah saya berhasil menyelesaikan seluruh latihan praktikum secara mandiri?
  • Bila ada kendala, bagian manakah yang paling sulit dan bagaimana rencana saya mengatasinya?

Asesmen dan Tindak Lanjut

Hasil praktikum dan kuis digunakan untuk memetakan penguasaan peserta. Peserta yang nilainya belum memenuhi kriteria mengulang latihan pada bagian yang kurang dengan pendampingan, sedangkan yang telah menguasai diberikan pengayaan berupa pengembangan fitur tambahan. Catatan perbaikan disampaikan melalui umpan balik tertulis atau lisan.

Kesetiaan mengikuti alur pertemuan demi pertemuan merupakan kunci keberhasilan pengelolaan state dan interaksi pengguna secara dinamis. Materi berikutnya dibangun di atas kompetensi yang telah dicapai, sehingga menuntaskan pembelajaran setiap pertemuan menjadi bagian penting dari pencapaian akhir. Peserta disarankan mempersiapkan diri membaca panduan praktikum sebelum pertemuan berikutnya tiba.

Dengan selesainya pertemuan ini, peserta menambah satu kompetensi pada peta belajar Mobile Programming. Kemajuan itu dicatat dan menjadi dasar penilaian akhir serta bahan diskusi proyek yang menutup keseluruhan kurikulum.

No Comment! Be the first one.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *