dark Theme and 18 other changes done

This commit is contained in:
2025-11-20 12:33:30 +05:30
parent fda5d075ff
commit 4fe6af4098
15 changed files with 484 additions and 339 deletions

View File

@@ -21,21 +21,47 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen> {
var service = getIt<BeneficiaryService>();
bool _isLoading = true;
List<Beneficiary> _beneficiaries = [];
List<Beneficiary> _filteredBeneficiaries = [];
final TextEditingController _searchController = TextEditingController();
@override
void initState() {
super.initState();
_loadBeneficiaries();
_searchController.addListener(() {
_filterBeneficiaries(_searchController.text);
});
}
@override
void dispose() {
_searchController.dispose();
super.dispose();
}
Future<void> _loadBeneficiaries() async {
final data = await service.fetchBeneficiaryList();
setState(() {
_beneficiaries = data;
_filteredBeneficiaries = data;
_isLoading = false;
});
}
void _filterBeneficiaries(String query) {
setState(() {
if (query.isEmpty) {
_filteredBeneficiaries = _beneficiaries;
} else {
_filteredBeneficiaries = _beneficiaries.where((beneficiary) {
final lowerQuery = query.toLowerCase();
return beneficiary.name.toLowerCase().contains(lowerQuery) ||
beneficiary.accountNo.toLowerCase().contains(lowerQuery);
}).toList();
}
});
}
Widget _buildShimmerList() {
return ListView.builder(
itemCount: 6,
@@ -63,14 +89,14 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen> {
}
Widget _buildBeneficiaryList() {
if (_beneficiaries.isEmpty) {
if (_filteredBeneficiaries.isEmpty) {
return Center(
child: Text(AppLocalizations.of(context).noBeneficiaryFound));
}
return ListView.builder(
itemCount: _beneficiaries.length,
itemCount: _filteredBeneficiaries.length,
itemBuilder: (context, index) {
final item = _beneficiaries[index];
final item = _filteredBeneficiaries[index];
return ListTile(
leading: CircleAvatar(
radius: 24,
@@ -111,7 +137,27 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen> {
),
body: Stack(
children: [
_isLoading ? _buildShimmerList() : _buildBeneficiaryList(),
Column(
children: [
Padding(
padding: const EdgeInsets.all(12.0),
child: TextField(
controller: _searchController,
decoration: InputDecoration(
hintText: "Search by name or account number",
prefixIcon: const Icon(Icons.search),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
),
Expanded(
child:
_isLoading ? _buildShimmerList() : _buildBeneficiaryList(),
),
],
),
IgnorePointer(
child: Center(
child: Opacity(