import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:penyaluran_app/app/modules/warga/controllers/warga_dashboard_controller.dart'; import 'package:penyaluran_app/app/widgets/bantuan_card.dart'; import 'package:penyaluran_app/app/theme/app_theme.dart'; class WargaPenerimaanView extends GetView { const WargaPenerimaanView({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Obx(() { if (controller.isLoading.value) { return const Center(child: CircularProgressIndicator()); } return RefreshIndicator( onRefresh: () async { controller.fetchData(); }, child: controller.penerimaPenyaluran.isEmpty ? _buildEmptyState() : _buildPenerimaanList(), ); }), ); } Widget _buildEmptyState() { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( color: AppTheme.primaryColor.withOpacity(0.1), shape: BoxShape.circle, ), child: Icon( Icons.volunteer_activism, size: 80, color: AppTheme.primaryColor, ), ), const SizedBox(height: 24), Text( 'Belum Ada Penerimaan', style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: Colors.grey.shade800, ), ), const SizedBox(height: 12), Padding( padding: const EdgeInsets.symmetric(horizontal: 40), child: Text( 'Anda belum menerima bantuan. Bantuan akan muncul di sini ketika Anda menerimanya.', textAlign: TextAlign.center, style: TextStyle( fontSize: 16, color: Colors.grey.shade600, ), ), ), const SizedBox(height: 32), ElevatedButton.icon( onPressed: () { controller.fetchData(); }, icon: const Icon(Icons.refresh), label: const Text('Muat Ulang'), style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12), backgroundColor: AppTheme.primaryColor, foregroundColor: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), ), ], ), ); } Widget _buildPenerimaanList() { return ListView.builder( padding: const EdgeInsets.all(16), itemCount: controller.penerimaPenyaluran.length, itemBuilder: (context, index) { final item = controller.penerimaPenyaluran[index]; return BantuanCard( item: item, onTap: () { // Navigasi ke detail penerimaan Get.toNamed('/warga/detail-penerimaan', arguments: {'id': item.id}); }, ); }, ); } }