Perbarui beberapa file konfigurasi fingerprint untuk arsitektur arm64-v8a, armeabi-v7a, x86, dan x86_64. Modifikasi model SkemaBantuan untuk menggunakan operator null-aware pada jumlah diterima per orang. Perbarui logika pengambilan data di AuthProvider untuk menyederhanakan pengecekan dan logging. Tambahkan fungsionalitas baru di DonaturDashboardController untuk mengunggah foto bantuan dan memperbarui data yang disimpan. Hapus tampilan yang tidak digunakan di DonaturRiwayatPenitipanView dan perbarui tampilan di beberapa view untuk meningkatkan pengalaman pengguna.

This commit is contained in:
Khafidh Fuadi
2025-03-26 09:57:13 +07:00
parent 88bef1c8e1
commit eede5ebd4d
33 changed files with 600 additions and 793 deletions

View File

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
import 'package:penyaluran_app/app/routes/app_pages.dart';
import 'package:penyaluran_app/app/utils/date_time_helper.dart';
import 'package:percent_indicator/circular_percent_indicator.dart';

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:penyaluran_app/app/modules/petugas_desa/controllers/donatur_controller.dart';
import 'package:penyaluran_app/app/theme/app_theme.dart';
import 'package:penyaluran_app/app/data/models/donatur_model.dart';
import 'package:penyaluran_app/app/data/models/penitipan_bantuan_model.dart';
import 'package:penyaluran_app/app/widgets/dialogs/detail_penitipan_dialog.dart';

View File

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:penyaluran_app/app/modules/petugas_desa/controllers/penerima_controller.dart';
import 'package:penyaluran_app/app/theme/app_theme.dart';
import 'package:intl/intl.dart';
import 'package:penyaluran_app/app/utils/date_time_helper.dart';
class DetailPenerimaView extends GetView<PenerimaController> {

View File

@ -743,10 +743,10 @@ class _KonfirmasiPenerimaPageState extends State<KonfirmasiPenerimaPage> {
// Hapus file sementara sebelum navigasi
try {
if (signatureFile != null && signatureFile.existsSync()) {
if (signatureFile.existsSync()) {
await signatureFile.delete();
}
if (tempDir != null && tempDir.existsSync()) {
if (tempDir.existsSync()) {
await tempDir.delete();
}
} catch (e) {

View File

@ -632,18 +632,26 @@ class PenitipanView extends GetView<PenitipanBantuanController> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.camera_alt,
Icons.add_photo_alternate,
size: 48,
color: Colors.grey.shade600,
),
const SizedBox(height: 8),
Text(
'Ambil Foto',
'Pilih Foto',
style: TextStyle(
color: Colors.grey.shade600,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 4),
Text(
'Kamera atau Galeri',
style: TextStyle(
color: Colors.grey.shade600,
fontSize: 12,
),
),
],
),
),

View File

@ -426,7 +426,9 @@ class StokBantuanView extends GetView<StokBantuanController> {
context,
icon: Icons.access_time,
label: 'Terakhir Diperbarui',
value: DateTimeHelper.formatDateTime(item.updatedAt),
value: item.updatedAt != null
? '${item.updatedAt!.day}/${item.updatedAt!.month}/${item.updatedAt!.year} ${item.updatedAt!.hour}:${item.updatedAt!.minute}'
: 'Tidak ada data',
),
),
],

View File

@ -90,29 +90,20 @@ class TambahPenyaluranView extends GetView<JadwalPenyaluranController> {
print('stokData $stokData');
if (stokData != null) {
namaStokBantuan.value =
stokData['nama'] ?? 'Nama stok tidak tersedia';
satuanStokBantuan.value = stokData['satuan'] ?? 'Tidak ada satuan';
isUang.value = stokData['is_uang'] ?? false;
namaStokBantuan.value = stokData['nama'] ?? 'Nama stok tidak tersedia';
satuanStokBantuan.value = stokData['satuan'] ?? 'Tidak ada satuan';
isUang.value = stokData['is_uang'] ?? false;
// Ambil jumlah stok tersedia
if (stokData['total_stok'] != null) {
totalStokTersedia.value = stokData['total_stok'].toDouble();
} else {
totalStokTersedia.value = 0;
}
// Periksa kecukupan stok
isStokCukup.value =
totalStokTersedia.value >= totalStokDibutuhkan.value;
// Ambil jumlah stok tersedia
if (stokData['total_stok'] != null) {
totalStokTersedia.value = stokData['total_stok'].toDouble();
} else {
namaStokBantuan.value = 'Stok tidak ditemukan';
satuanStokBantuan.value = '';
totalStokTersedia.value = 0;
isStokCukup.value = false;
isUang.value = false;
}
// Periksa kecukupan stok
isStokCukup.value =
totalStokTersedia.value >= totalStokDibutuhkan.value;
} catch (e) {
print('Error loading stok bantuan: $e');
namaStokBantuan.value = 'Error memuat data stok';