Tambahkan dukungan penyimpanan lokal dan perbaikan manajemen data

- Integrasikan GetStorage untuk menyimpan data counter secara lokal
- Tambahkan metode loadCountersFromStorage di CounterService
- Perbarui model DonaturModel dan StokBantuanModel untuk konsistensi data
- Tambahkan properti lastUpdateTime di controller untuk melacak pembaruan data
- Perbaiki tampilan dengan menambahkan informasi waktu terakhir update
- Optimalkan metode refresh dan update data di berbagai controller
This commit is contained in:
Khafidh Fuadi
2025-03-12 15:21:16 +07:00
parent d97c324ac9
commit add585fe23
12 changed files with 882 additions and 448 deletions

View File

@ -1,9 +1,21 @@
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
/// Service untuk berbagi data counter antar controller
class CounterService extends GetxService {
static CounterService get to => Get.find<CounterService>();
// Penyimpanan lokal
final GetStorage _storage = GetStorage();
// Keys untuk penyimpanan
static const String _keyMenunggu = 'counter_menunggu';
static const String _keyTerverifikasi = 'counter_terverifikasi';
static const String _keyDitolak = 'counter_ditolak';
static const String _keyDiproses = 'counter_diproses';
static const String _keyNotifikasi = 'counter_notifikasi';
static const String _keyJadwal = 'counter_jadwal';
// Counter untuk penitipan
final RxInt jumlahMenunggu = 0.obs;
final RxInt jumlahTerverifikasi = 0.obs;
@ -18,6 +30,26 @@ class CounterService extends GetxService {
// Counter untuk jadwal
final RxInt jumlahJadwalHariIni = 0.obs;
@override
void onInit() {
super.onInit();
// Muat nilai counter dari penyimpanan lokal
loadCountersFromStorage();
}
// Metode untuk memuat counter dari penyimpanan lokal
void loadCountersFromStorage() {
jumlahMenunggu.value = _storage.read(_keyMenunggu) ?? 0;
jumlahTerverifikasi.value = _storage.read(_keyTerverifikasi) ?? 0;
jumlahDitolak.value = _storage.read(_keyDitolak) ?? 0;
jumlahDiproses.value = _storage.read(_keyDiproses) ?? 0;
jumlahNotifikasiBelumDibaca.value = _storage.read(_keyNotifikasi) ?? 0;
jumlahJadwalHariIni.value = _storage.read(_keyJadwal) ?? 0;
print(
'Counter loaded from storage - Menunggu: ${jumlahMenunggu.value}, Terverifikasi: ${jumlahTerverifikasi.value}, Ditolak: ${jumlahDitolak.value}');
}
// Metode untuk memperbarui counter penitipan
void updatePenitipanCounters({
required int menunggu,
@ -27,20 +59,31 @@ class CounterService extends GetxService {
jumlahMenunggu.value = menunggu;
jumlahTerverifikasi.value = terverifikasi;
jumlahDitolak.value = ditolak;
// Simpan ke penyimpanan lokal
_storage.write(_keyMenunggu, menunggu);
_storage.write(_keyTerverifikasi, terverifikasi);
_storage.write(_keyDitolak, ditolak);
print(
'Counter updated and saved - Menunggu: $menunggu, Terverifikasi: $terverifikasi, Ditolak: $ditolak');
}
// Metode untuk memperbarui counter pengaduan
void updatePengaduanCounter(int diproses) {
jumlahDiproses.value = diproses;
_storage.write(_keyDiproses, diproses);
}
// Metode untuk memperbarui counter notifikasi
void updateNotifikasiCounter(int belumDibaca) {
jumlahNotifikasiBelumDibaca.value = belumDibaca;
_storage.write(_keyNotifikasi, belumDibaca);
}
// Metode untuk memperbarui counter jadwal
void updateJadwalCounter(int hariIni) {
jumlahJadwalHariIni.value = hariIni;
_storage.write(_keyJadwal, hariIni);
}
}